wxWidgets教程(10)——wxAUI相关用法总结

一、介绍

wxAUI是一种高级的布局管理器,用来管理各个面板(pane)的停靠与浮动的布局。主要涉及到中心、洋葱、行与列。

中心:即你所创建的许许多多的面板,必须有一个默认的中心面板,通过CentrePane来设置。

洋葱:除了中心的面板,其他所有围绕中心的面板都是洋葱的一层一层皮,围绕着中心,向外扩散,通过Layer函数设置,中心为0,外层递增

行:在上下左右4个方向里,选择一个洋葱皮,这一层皮里,可以设置很多行,洋葱皮把他们包起来了,通过Row函数设置,向外递增

列:在上面的行中,选择一行,可以在这行中排列很多面板,通过Position函数设置,从左向右,从上向下,依次递增

可以通过一张图来描述这个问题,如下图:



二、新建一个wxAUI项目

1、给Frame添加一个成员变量

wxAuiManager m_mgr;
2、在构造函数中,进行初始化设置

m_mgr.SetManagedWindow(this);
m_mgr.SetFlags(wxAUI_MGR_DEFAULT);
3、在析构函数中,进行卸载

m_mgr.UnInit();
4、通过下面的函数添加一个面板

m_mgr.AddPane( m_auinotebook1, wxAuiPaneInfo() .Name( wxT("my_aui_notebook") )\
	.Bottom() .Caption( wxT("这个是panel标题") ).PinButton( true )\
	.Dock().Resizable().FloatingSize( wxSize( 200,100 ) )\
	.Row( 1 ).Position( 1 ).BestSize( wxSize( 120,200 ) )\
	.Layer( 1 ).CentrePane() );
5、手动添加完毕以后,需要调用下面函数更新面板,防止闪烁

m_mgr.Update();
6、有时候,拖动一个面板放到上下左右4个方向的时候,会影响到其他面板的布局

通过下面的函数,来设置面板的宽高百分比,防止拖拽时,有些面板格外的大而丑陋

m_mgr.SetDockSizeConstraint(0.5, 0.5);

三、设置面板的属性信息wxAuiPaneInfo

1、Name():设置面板的aui名称

2、CaptionVisible | Caption | Icon:是否显示标题栏,标题栏文字,标题栏图标

3、MaximizeButton | MinimizeButton | CloseButton | PinButton:面板的右上角按钮,最大,最小,关闭,置顶。

4、Dock | Dockable | Float | Floatable:面板能否停靠或浮动,以及当前的状态是停靠还是浮动。

5、FloatingPosition | FloatingSize : 面板浮动时的位置和尺寸大小

6、Gripper | Movable | Hide | Show :面板是否显示拖拽的标识,是否可移动,以及面板是否可见。

7、BestSize | MinSize | MaxSize:理想的,最小的,最大的尺寸设置。当发生停靠或浮动时,会尽可能采用理想尺寸。

8、CentrePane | DefaultPane | ToolbarPane:分别使用默认的中心面板设置,默认的面板设置,默认的工具条面板设置。

9、Resizable:如果为true,面板可以伸缩;如果为false,面板不能伸缩,自动调整为fixed的尺寸。

10、Direction:设置面板在上下左右的4个方向中选一个。

11、BottomDockable | LeftDockable | RightDockable | TopDockable:面板允许停靠的方向。























猜你喜欢

转载自blog.csdn.net/wyansai/article/details/78467152