查看源代码 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().

等效于 create(This, Parent, [])

-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.

销毁对象

此函数的链接

getMinimumPaneSize(This)

查看源代码
-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().

返回右侧/底部窗格。

此函数的链接

initialize(This, Window)

查看源代码
-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/2splitVertically/4splitHorizontally/4 之一,以便设置窗格。您可以创建两个窗口,其中一个在不显示时隐藏;或者您可以按需创建和删除第二个窗格。

请参阅

此函数的链接

replaceWindow(This, WinOld, WinNew)

查看源代码
-spec replaceWindow(This, WinOld, WinNew) -> boolean()
                       when
                           This :: wxSplitterWindow(),
                           WinOld :: wxWindow:wxWindow(),
                           WinNew :: wxWindow:wxWindow().

此函数将 wxSplitterWindow 管理的其中一个窗口替换为另一个窗口。

通常,最好使用它而不是调用 unsplit/2,然后再重新拆分窗口,因为它会减少很多闪烁(如果有)。无论拆分器有两个窗口还是只有一个窗口,调用此函数都是有效的。

两个参数都应该是非 NULL,并且 winOld 必须指定拆分器管理的窗口之一。如果参数不正确或无法替换窗口,则返回 false。否则,该函数将返回 true,但请注意,它不会删除替换的窗口,您可能希望自己删除它。

请参阅: getMinimumPaneSize/1

此函数的链接

setMinimumPaneSize(This, PaneSize)

查看源代码
-spec setMinimumPaneSize(This, PaneSize) -> ok when This :: wxSplitterWindow(), PaneSize :: integer().

设置最小窗格大小。

备注:默认最小窗格大小为零,这意味着可以通过拖动分隔条将任一窗格减小到零,从而删除其中一个窗格。要防止此行为(并否决超出范围的分隔条拖动),请设置最小大小,例如 20 像素。如果在创建拆分器窗口时使用了 wxSP_PERMIT_UNSPLIT 样式,则即使最小大小不为零,也可以取消拆分窗口。

请参阅: getMinimumPaneSize/1

此函数的链接

setSashGravity(This, Gravity)

查看源代码
-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

此函数的链接

setSashPosition(This, Position)

查看源代码
-spec setSashPosition(This, Position) -> ok when This :: wxSplitterWindow(), Position :: integer().

等效于 setSashPosition(This, Position, [])

-spec setSashPosition(This, Position, [Option]) -> ok
                         when
                             This :: wxSplitterWindow(),
                             Position :: integer(),
                             Option :: {redraw, boolean()}.

设置分隔条位置。

备注:当前不检查超出范围的值。

请参阅: getSashPosition/1

此函数的链接

setSplitMode(This, Mode)

查看源代码
-spec setSplitMode(This, Mode) -> ok when This :: wxSplitterWindow(), Mode :: integer().

设置拆分模式。

备注:仅设置内部变量;不更新显示。

请参阅

此函数的链接

splitHorizontally(This, Window1, Window2)

查看源代码
-spec splitHorizontally(This, Window1, Window2) -> boolean()
                           when
                               This :: wxSplitterWindow(),
                               Window1 :: wxWindow:wxWindow(),
                               Window2 :: wxWindow:wxWindow().

等效于 splitHorizontally(This, Window1, Window2, [])

-spec splitHorizontally(This, Window1, Window2, [Option]) -> boolean()
                           when
                               This :: wxSplitterWindow(),
                               Window1 :: wxWindow:wxWindow(),
                               Window2 :: wxWindow:wxWindow(),
                               Option :: {sashPosition, integer()}.

初始化拆分器窗口的顶部和底部窗格。

如果子窗口当前处于隐藏状态,则会显示它们。

返回:如果成功,则返回 true,否则返回 false(窗口已拆分)。

备注:如果希望最初查看两个窗格,则应调用此方法。它也可以在任何后续时间调用,但应用程序应使用 isSplit/1 检查窗口当前是否未拆分。

请参阅

此函数的链接

splitVertically(This, Window1, Window2)

查看源代码
-spec splitVertically(This, Window1, Window2) -> boolean()
                         when
                             This :: wxSplitterWindow(),
                             Window1 :: wxWindow:wxWindow(),
                             Window2 :: wxWindow:wxWindow().

等效于 splitVertically(This, Window1, Window2, [])

-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().

使分隔条和子窗格的任何待定大小调整立即生效。

此类大小调整通常在空闲时间进行,以便等待布局完成。但是,这可能会导致在窗口显示后调整窗格大小而出现不可接受的闪烁。要解决此问题,您可以在显示顶级窗口之前执行窗口布局(例如,向父窗口发送大小事件),然后调用此函数。