一、介绍
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:面板允许停靠的方向。