wxWidget之高级框架wxAUI

本文详细介绍了wxAUI框架的核心组件及其工作原理,包括wxAUIManager类、wxAUIPaneInfo对象和停靠布局参数。通过示例展示了如何添加、修改面板以及调整面板的浮动和停靠状态。

wxAUI是一个高级用户接口。最初由kirix Cprp提供。wxAUI尝试封装以下的UI:

l  Frame管理。

l  工具条。

l  非模态控件

l  L&F。

_____________________________________________________________________________________________________

 wxAuiManager

wxAuiManager是wxAUI类框架的关键类。

wxAuiManager为一个特定的wxFrame管理着相应的面板(pane),它使用一个面板的wxAuiPaneInfo信息来决定每个面板停靠和浮动行为。wxAuiManager使用wxwidgets的sizer机制来放置第个Frame的布局。它使用一个可替换的dockart类来完成所有的绘制,因此,所有绘制都在一个地方。

wxAuiManager以如下方式工作:程序员添加面板到该类中,或者修改已经存在的面板属性(依靠地方,浮动状态,显示状态等),为了应用这些改变,需要调用wxAuiManager的Undate()函数。通过一次修改多个面板,然后再使用Update()一次提交所有更改,这种批处理的方式避免了闪烁。

如下:

wxTextCtrl* text1 = new wxTextCtrl(this, -1);

wxTextCtrl* text2 = new wxTextCtrl(this, -1);

m_mgr.AddPane(text1, wxLEFT, wxT("Pane Caption"));

m_mgr.AddPane(text2, wxBOTTOM, wxT("Pane Caption"));

m_mgr.Update();

另外,位置也可以很容易更改。以下是一个在tool window的将一个存在的面板设为浮动。

m_mgr.GetPane(text1).Float();

 

层(Layer),行(Row)、方位(Direction)、位置(Position)

在wxAUI中,停靠布局通过几个面板参数进行设置。其中有四个重要参数:

Direction:每个停靠面板(docked pane)都有一个方位,顶,底,左,右,或中。

Position:在一个dock中,可以放置多个面板。想像下,两个面板停靠在一个窗口的左边。一个面板可以挨着另一个。在相应的dock中,面板的位置表示它的次序,从0开始。因此,如果两个面板停在左边,第一个面板的position=0,第二个为1.

Row:一行可以允许两个dock挨着。这种方式在一个重要的地方有应用:toolbar。可以有多个toolbar行,第一行为0,第二行为1.row也可以用于垂直的dock面板。

Layer:一个层相当于一洋葱片。层1表示管理面板的最中心。因而,如果面板在层0,它将离中心窗口(有时也称为“内容窗口(content window)”)非常接近。添加层,可以“吞下”较低值的所有层。这与行的概念非常接近,但不同的是,由于较低值的所有面板让步于较高值的面板。理解层的最好方式是运行wxAUI示例。

 ______________________________________________________________________________________________

wxAUIPaneInfo

wxAUIPaneInfo也是wxAUI类框架的一部分。

wxAuiPaneInfo指定了一个pane的所有参数。这些参数指定了pane在屏幕上的位置,是否docked或floating或hidden。另外,这些参数指定了pane的docked位置,floating位置,preferred size,minimum size,caption text等。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值