查看源代码 wxSplitterWindow (wx v2.4.3)
此类管理最多两个子窗口。
当前视图可以编程方式拆分为两个(可能来自菜单命令),并且可以通过编程方式或通过 wxSplitterWindow
用户界面取消拆分。
样式
此类支持以下样式
wxSP_3D: 绘制 3D 效果的边框和分隔条。
wxSP_THIN_SASH: 绘制细分隔条。
wxSP_3DSASH: 绘制 3D 效果的分隔条(默认样式的一部分)。
wxSP_3DBORDER: wxSP_BORDER 的同义词。
wxSP_BORDER: 绘制标准边框。
wxSP_NOBORDER: 无边框(默认)。
wxSP_NO_XP_THEME: 在 Windows 下,关闭使用 Windows 主题绘制拆分器的尝试,因此边框和分隔条将采用 XP 之前的外观。
wxSP_PERMIT_UNSPLIT: 始终允许取消拆分,即使最小窗格大小不为零。
wxSP_LIVE_UPDATE: 不绘制 XOR 线,而是立即调整子窗口大小。
请参阅
此类派生自,并且可以使用以下函数
wxWidgets 文档: wxSplitterWindow
事件
从此类发出的事件类型
摘要
函数
创建函数,用于两步构造。
销毁对象
返回当前最小窗格大小(默认为零)。
返回当前分隔条重力。
返回当前分隔条位置。
获取拆分模式。
返回左侧/顶部或唯一窗格。
返回右侧/底部窗格。
初始化拆分器窗口以使其具有一个窗格。
如果窗口已拆分,则返回 true,否则返回 false。
默认构造函数。
用于创建窗口的构造函数。
此函数将 wxSplitterWindow
管理的其中一个窗口替换为另一个窗口。
设置最小窗格大小。
设置分隔条重力。
设置分隔条位置。
设置拆分模式。
初始化拆分器窗口的顶部和底部窗格。
初始化拆分器窗口的左侧和右侧窗格。
取消拆分窗口。
使分隔条和子窗格的任何待定大小调整立即生效。
类型
-type wxSplitterWindow() :: wx:wx_object().
函数
-spec create(This, Parent) -> boolean() when This :: wxSplitterWindow(), Parent :: wxWindow:wxWindow().
-spec create(This, Parent, [Option]) -> boolean() when This :: wxSplitterWindow(), Parent :: wxWindow:wxWindow(), Option :: {id, integer()} | {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
创建函数,用于两步构造。
有关详细信息,请参阅 new/2
。
-spec destroy(This :: wxSplitterWindow()) -> ok.
销毁对象
-spec getMinimumPaneSize(This) -> integer() when This :: wxSplitterWindow().
返回当前最小窗格大小(默认为零)。
请参阅: setMinimumPaneSize/2
-spec getSashGravity(This) -> number() when This :: wxSplitterWindow().
返回当前分隔条重力。
请参阅: setSashGravity/2
-spec getSashPosition(This) -> integer() when This :: wxSplitterWindow().
返回当前分隔条位置。
请参阅: setSashPosition/3
-spec getSplitMode(This) -> wx:wx_enum() when This :: wxSplitterWindow().
获取拆分模式。
请参阅
-spec getWindow1(This) -> wxWindow:wxWindow() when This :: wxSplitterWindow().
返回左侧/顶部或唯一窗格。
-spec getWindow2(This) -> wxWindow:wxWindow() when This :: wxSplitterWindow().
返回右侧/底部窗格。
-spec initialize(This, Window) -> ok when This :: wxSplitterWindow(), Window :: wxWindow:wxWindow().
初始化拆分器窗口以使其具有一个窗格。
如果子窗口当前处于隐藏状态,则会显示该子窗口。
备注:如果希望最初仅在拆分器窗口中查看单个窗格,则应调用此方法。
请参阅
-spec isSplit(This) -> boolean() when This :: wxSplitterWindow().
如果窗口已拆分,则返回 true,否则返回 false。
-spec new() -> wxSplitterWindow().
默认构造函数。
-spec new(Parent) -> wxSplitterWindow() when Parent :: wxWindow:wxWindow().
等效于 new(Parent, [])
。
-spec new(Parent, [Option]) -> wxSplitterWindow() when Parent :: wxWindow:wxWindow(), Option :: {id, integer()} | {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
用于创建窗口的构造函数。
备注:使用此构造函数后,必须创建以拆分器窗口为父窗口的一个或两个子窗口,然后调用 initialize/2
、splitVertically/4
和 splitHorizontally/4
之一,以便设置窗格。您可以创建两个窗口,其中一个在不显示时隐藏;或者您可以按需创建和删除第二个窗格。
请参阅
-spec replaceWindow(This, WinOld, WinNew) -> boolean() when This :: wxSplitterWindow(), WinOld :: wxWindow:wxWindow(), WinNew :: wxWindow:wxWindow().
此函数将 wxSplitterWindow
管理的其中一个窗口替换为另一个窗口。
通常,最好使用它而不是调用 unsplit/2
,然后再重新拆分窗口,因为它会减少很多闪烁(如果有)。无论拆分器有两个窗口还是只有一个窗口,调用此函数都是有效的。
两个参数都应该是非 NULL,并且 winOld
必须指定拆分器管理的窗口之一。如果参数不正确或无法替换窗口,则返回 false。否则,该函数将返回 true,但请注意,它不会删除替换的窗口,您可能希望自己删除它。
请参阅: getMinimumPaneSize/1
-spec setMinimumPaneSize(This, PaneSize) -> ok when This :: wxSplitterWindow(), PaneSize :: integer().
设置最小窗格大小。
备注:默认最小窗格大小为零,这意味着可以通过拖动分隔条将任一窗格减小到零,从而删除其中一个窗格。要防止此行为(并否决超出范围的分隔条拖动),请设置最小大小,例如 20 像素。如果在创建拆分器窗口时使用了 wxSP_PERMIT_UNSPLIT 样式,则即使最小大小不为零,也可以取消拆分窗口。
请参阅: getMinimumPaneSize/1
-spec setSashGravity(This, Gravity) -> ok when This :: wxSplitterWindow(), Gravity :: number().
设置分隔条重力。
备注:重力是控制调整 wxSplitterWindow
大小时分隔条位置的实际因素。重力告诉 wxSplitterWindow
在调整大小时左侧/顶部窗口将增长多少。示例值
0.0:仅自动调整底部/右侧窗口的大小
0.5:两个窗口都按相等的大小增长
1.0:仅左侧/顶部窗口增长。重力应为介于 0.0 和 1.0 之间的实数。分隔条重力的默认值为 0.0。该值与之前(在引入重力之前)
wxSplitterWindow
的行为兼容。
请注意,当为新创建的拆分器窗口设置分隔条重力时,通常需要使用 wxWindow:setSize/6
显式设置拆分器大小,以确保其足够大以容纳其初始分隔条位置。否则,即如果窗口以默认的小尺寸创建,并且仅在稍后调整到正确的大小,则初始分隔条位置将受到重力的影响,并且通常会导致重力为 1 的分隔条位于最右侧位置。有关更多详细信息,请参阅拆分器示例中创建 wxSplitterWindow
的示例代码。
请参阅: getSashGravity/1
-spec setSashPosition(This, Position) -> ok when This :: wxSplitterWindow(), Position :: integer().
-spec setSashPosition(This, Position, [Option]) -> ok when This :: wxSplitterWindow(), Position :: integer(), Option :: {redraw, boolean()}.
设置分隔条位置。
备注:当前不检查超出范围的值。
请参阅: getSashPosition/1
-spec setSplitMode(This, Mode) -> ok when This :: wxSplitterWindow(), Mode :: integer().
设置拆分模式。
备注:仅设置内部变量;不更新显示。
请参阅
-spec splitHorizontally(This, Window1, Window2) -> boolean() when This :: wxSplitterWindow(), Window1 :: wxWindow:wxWindow(), Window2 :: wxWindow:wxWindow().
-spec splitHorizontally(This, Window1, Window2, [Option]) -> boolean() when This :: wxSplitterWindow(), Window1 :: wxWindow:wxWindow(), Window2 :: wxWindow:wxWindow(), Option :: {sashPosition, integer()}.
初始化拆分器窗口的顶部和底部窗格。
如果子窗口当前处于隐藏状态,则会显示它们。
返回:如果成功,则返回 true,否则返回 false(窗口已拆分)。
备注:如果希望最初查看两个窗格,则应调用此方法。它也可以在任何后续时间调用,但应用程序应使用 isSplit/1
检查窗口当前是否未拆分。
请参阅
-spec splitVertically(This, Window1, Window2) -> boolean() when This :: wxSplitterWindow(), Window1 :: wxWindow:wxWindow(), Window2 :: wxWindow:wxWindow().
-spec splitVertically(This, Window1, Window2, [Option]) -> boolean() when This :: wxSplitterWindow(), Window1 :: wxWindow:wxWindow(), Window2 :: wxWindow:wxWindow(), Option :: {sashPosition, integer()}.
初始化拆分器窗口的左侧和右侧窗格。
如果子窗口当前处于隐藏状态,则会显示它们。
返回:如果成功,则返回 true,否则返回 false(窗口已拆分)。
备注:如果希望最初查看两个窗格,则应调用此方法。它也可以在任何后续时间调用,但应用程序应使用 isSplit/1
检查窗口当前是否未拆分。
请参阅
-spec unsplit(This) -> boolean() when This :: wxSplitterWindow().
等效于 unsplit(This, [])
。
-spec unsplit(This, [Option]) -> boolean() when This :: wxSplitterWindow(), Option :: {toRemove, wxWindow:wxWindow()}.
取消拆分窗口。
返回:如果成功,则返回 true,否则返回 false(窗口未拆分)。
备注:此调用实际上不会删除要删除的窗格;它调用 OnUnsplit()
(在 wx 中未实现),可以重写该方法以实现所需的行为。默认情况下,要删除的窗格是隐藏的。
请参阅
-spec updateSize(This) -> ok when This :: wxSplitterWindow().
使分隔条和子窗格的任何待定大小调整立即生效。
此类大小调整通常在空闲时间进行,以便等待布局完成。但是,这可能会导致在窗口显示后调整窗格大小而出现不可接受的闪烁。要解决此问题,您可以在显示顶级窗口之前执行窗口布局(例如,向父窗口发送大小事件),然后调用此函数。