查看源码 wxToolBar (wx v2.4.3)
工具栏是一组按钮和/或其他控件的条形区域,通常放置在 wxFrame
中的菜单栏下方。
您可以创建一个由框架管理的工具栏,通过调用 wxFrame:createToolBar/2
。在 Pocket PC 下,您应该始终使用此函数来创建由框架管理的工具栏,以便 wxWidgets 可以使用组合的菜单栏和工具栏。如果您管理自己的工具栏,请像往常一样创建 wxToolBar
。
您可以向工具栏添加几种不同类型的工具。这些类型由 ?wxItemKind 枚举控制。
请注意,wxToolBar
中的许多方法(例如 addTool/6
)会返回一个 wxToolBarToolBase*
对象。这应被视为表示新添加的工具栏项的不透明句柄,提供对其 ID 和在工具栏中位置的访问。应该通过调用 wxToolBar
方法来更改项的状态,例如 enableTool/3
。调用 wxToolBarToolBase
(在 wx 中未实现)方法(有意未记录)不会更改工具栏中项的可见状态。
在添加完所有需要的工具后,您必须调用 realize/1
以有效地构造和显示工具栏。
wxMSW
注意:请注意,在 wxMSW 下,工具栏会绘制工具以反映系统范围的颜色。如果在工具位图中使用超过 16 种颜色,您可能希望抑制此行为,否则位图中的系统颜色将无意中映射到系统颜色。为此,请在创建工具栏之前设置 msw.remap 系统选项:如果您希望使用 32 位图像(包括用于透明度的 alpha 通道),请使用:然后将关闭颜色重映射,并使用透明背景。但仅在 Windows XP 且为真彩色时使用此选项
样式
此类支持以下样式
wxTB_FLAT: 使工具栏具有扁平外观(仅限 Windows 和 GTK)。
wxTB_DOCKABLE: 使工具栏可浮动和停靠(仅限 GTK)。
wxTB_HORIZONTAL: 指定水平布局(默认)。
wxTB_VERTICAL: 指定垂直布局。
wxTB_TEXT: 在工具栏按钮中显示文本;默认情况下仅显示图标。
wxTB_NOICONS: 指定工具栏按钮中不显示图标;默认情况下会显示。
wxTB_NODIVIDER: 指定工具栏上方没有分隔符(边框)(仅限 Windows)
wxTB_NOALIGN: 指定不与父窗口对齐(仅限 Windows,不太有用)。
wxTB_HORZ_LAYOUT: 并排显示文本和图标,而不是垂直堆叠(仅限 Windows 和 GTK 2)。此样式必须与
wxTB_TEXT
一起使用。wxTB_HORZ_TEXT:
wxTB_HORZ_LAYOUT
和wxTB_TEXT
的组合。wxTB_NO_TOOLTIPS: 当鼠标悬停在工具上时,不显示工具的简短帮助工具提示。
wxTB_BOTTOM: 将工具栏与父窗口底部对齐。
wxTB_RIGHT: 将工具栏与父窗口右侧对齐。
wxTB_DEFAULT_STYLE:
wxTB_HORIZONTAL
和wxTB_FLAT
的组合。此样式是 wxWidgets 2.9.5 中新增的。另请参阅 overview_windowstyles。请注意,wxMSW 原生工具栏会忽略wxTB_NOICONS
样式。此外,只有当样式最初开启时,切换wxTB_TEXT
才会生效。
参见:工具栏概述
此类派生自以下类,并可以使用其函数
wxWidgets 文档:wxToolBar
事件
此类发出的事件类型
摘要
函数
向工具栏添加新的复选(或切换)工具。
向工具栏添加任何控件,通常例如 wxComboBox
。
向工具栏添加新的单选工具。
添加用于分隔工具组的分隔符。
向工具栏添加可伸缩空间。
向工具栏添加工具。
向工具栏添加工具。
向工具栏添加工具。
从工具栏中移除指定的工具并删除它。
此函数的行为类似于 deleteTool/2
,但它删除指定位置的工具,而不是具有给定 ID 的工具。
启用或禁用该工具。
返回由 id
标识的工具的指针,如果未找到相应的工具,则返回 NULL。
返回由 id
标识的控件的指针,如果未找到相应的控件,则返回 NULL。
查找给定鼠标位置的工具。
返回左右边距和上下边距,它们也用于工具间距。
返回工具栏期望拥有的位图大小。
调用以确定是否已启用工具(响应用户输入)。
返回给定工具的长帮助。
返回用于打包工具的值。
返回工具在工具栏中的位置,如果未找到该工具,则返回 wxNOT_FOUND
。
返回默认的分隔符大小。
返回给定工具的简短帮助。
返回整个按钮的大小,由于添加了 3D 效果,通常比工具位图大。
获取切换工具的开启/关闭状态。
将控件插入到工具栏中的给定位置。
将分隔符插入到工具栏中的给定位置。
在给定位置插入可伸缩空间。
将具有指定属性的工具插入到工具栏中的给定位置。
在添加工具后应调用此函数。
从工具栏中移除给定的工具,但不删除它。
设置用作工具栏边距的值。
设置每个工具位图的默认大小。
设置给定工具的长帮助。
设置用于分隔工具的值。
设置默认的分隔符大小。
设置给定工具的简短帮助。
打开或关闭工具。
类型
-type wxToolBar() :: wx:wx_object().
函数
-spec addCheckTool(This, ToolId, Label, Bitmap1) -> wx:wx_object() when This :: wxToolBar(), ToolId :: integer(), Label :: unicode:chardata(), Bitmap1 :: wxBitmap:wxBitmap().
-spec addCheckTool(This, ToolId, Label, Bitmap1, [Option]) -> wx:wx_object() when This :: wxToolBar(), ToolId :: integer(), Label :: unicode:chardata(), Bitmap1 :: wxBitmap:wxBitmap(), Option :: {bmpDisabled, wxBitmap:wxBitmap()} | {shortHelp, unicode:chardata()} | {longHelp, unicode:chardata()} | {data, wx:wx_object()}.
向工具栏添加新的复选(或切换)工具。
参数与 addTool/6
中的相同。
参见:addTool/6
-spec addControl(This, Control) -> wx:wx_object() when This :: wxToolBar(), Control :: wxControl:wxControl().
-spec addControl(This, Control, [Option]) -> wx:wx_object() when This :: wxToolBar(), Control :: wxControl:wxControl(), Option :: {label, unicode:chardata()}.
向工具栏添加任何控件,通常例如 wxComboBox
。
备注:wxMac:仅当 wxWidgets 构建时将 wxMAC_USE_NATIVE_TOOLBAR
设置为 1 时,才会显示标签
-spec addRadioTool(This, ToolId, Label, Bitmap1) -> wx:wx_object() when This :: wxToolBar(), ToolId :: integer(), Label :: unicode:chardata(), Bitmap1 :: wxBitmap:wxBitmap().
-spec addRadioTool(This, ToolId, Label, Bitmap1, [Option]) -> wx:wx_object() when This :: wxToolBar(), ToolId :: integer(), Label :: unicode:chardata(), Bitmap1 :: wxBitmap:wxBitmap(), Option :: {bmpDisabled, wxBitmap:wxBitmap()} | {shortHelp, unicode:chardata()} | {longHelp, unicode:chardata()} | {data, wx:wx_object()}.
向工具栏添加新的单选工具。
连续的单选工具形成一个单选组,使得组中只有一个按钮在任何时刻被按下,换句话说,每当组中的一个按钮被按下时,先前按下的按钮会自动释放。您应该避免拥有只有一个元素的单选组,因为用户将无法使用此类按钮。
默认情况下,单选组中的第一个按钮最初被按下,其他按钮未被按下。
参见:addTool/6
-spec addSeparator(This) -> wx:wx_object() when This :: wxToolBar().
添加用于分隔工具组的分隔符。
请注意,分隔符会使用当前平台适用的外观,因此它可以是垂直线(MSW,某些版本的 GTK)或仅仅是空格或其他内容。
请参阅
-spec addStretchableSpace(This) -> wx:wx_object() when This :: wxToolBar().
向工具栏添加可伸缩空间。
任何未被固定项目(除可伸缩空间外的所有项目)占用的空间,都将在工具栏中的可伸缩空间之间平均分配。此方法最常见的用法是在应在工具栏中右对齐的项目之前添加一个可伸缩空间,但也可能存在更特殊的可能性,例如,可以在工具栏的开头和结尾添加一个可伸缩空间,以使所有工具栏项目居中。
请参阅
起始版本:2.9.1
-spec addTool(This, Tool) -> wx:wx_object() when This :: wxToolBar(), Tool :: wx:wx_object().
向工具栏添加工具。
备注:将工具添加到工具栏后,您必须调用 realize/1
才能显示工具。
请参阅
-spec addTool(This, ToolId, Label, Bitmap) -> wx:wx_object() when This :: wxToolBar(), ToolId :: integer(), Label :: unicode:chardata(), Bitmap :: wxBitmap:wxBitmap().
-spec addTool(This, ToolId, Label, Bitmap, BmpDisabled) -> wx:wx_object() when This :: wxToolBar(), ToolId :: integer(), Label :: unicode:chardata(), Bitmap :: wxBitmap:wxBitmap(), BmpDisabled :: wxBitmap:wxBitmap(); (This, ToolId, Label, Bitmap, [Option]) -> wx:wx_object() when This :: wxToolBar(), ToolId :: integer(), Label :: unicode:chardata(), Bitmap :: wxBitmap:wxBitmap(), Option :: {shortHelp, unicode:chardata()} | {kind, wx:wx_enum()}.
向工具栏添加工具。
这个最常用的版本比下面的完整版本参数少,完整版本指定了更少用的按钮特性。
备注:将工具添加到工具栏后,您必须调用 realize/1
才能显示工具。
请参阅
-spec addTool(This, ToolId, Label, Bitmap, BmpDisabled, [Option]) -> wx:wx_object() when This :: wxToolBar(), ToolId :: integer(), Label :: unicode:chardata(), Bitmap :: wxBitmap:wxBitmap(), BmpDisabled :: wxBitmap:wxBitmap(), Option :: {kind, wx:wx_enum()} | {shortHelp, unicode:chardata()} | {longHelp, unicode:chardata()} | {data, wx:wx_object()}.
向工具栏添加工具。
备注:将工具添加到工具栏后,您必须调用 realize/1
才能显示工具。
请参阅
从工具栏中移除指定的工具并删除它。
如果您不想删除工具,而只是将其从工具栏中移除(以便以后可能将其添加回去),可以使用 removeTool/2
代替。
注意:无需调用 realize/1
来使更改生效,它会立即发生。
返回:如果工具被删除,则返回 true,否则返回 false。
此函数的行为类似于 deleteTool/2
,但它删除指定位置的工具,而不是具有给定 ID 的工具。
-spec enableTool(This, ToolId, Enable) -> ok when This :: wxToolBar(), ToolId :: integer(), Enable :: boolean().
启用或禁用该工具。
备注:某些实现会更改工具的可见状态以指示其已被禁用。
请参阅
-spec findById(This, Id) -> wx:wx_object() when This :: wxToolBar(), Id :: integer().
返回由 id
标识的工具的指针,如果未找到相应的工具,则返回 NULL。
-spec findControl(This, Id) -> wxControl:wxControl() when This :: wxToolBar(), Id :: integer().
返回由 id
标识的控件的指针,如果未找到相应的控件,则返回 NULL。
-spec findToolForPosition(This, X, Y) -> wx:wx_object() when This :: wxToolBar(), X :: integer(), Y :: integer().
查找给定鼠标位置的工具。
返回:如果找到工具,则返回指向该工具的指针,否则返回 NULL。
备注:目前在 wxGTK 中未实现(始终返回 NULL)。
返回左右边距和上下边距,它们也用于工具间距。
请参阅:setMargins/3
返回工具栏期望拥有的位图大小。
默认的位图大小取决于平台:例如,MSW 为 1615,GTK 为 2424。此大小不
一定表示在给定平台上用于工具栏的最佳大小,为此您应该使用 wxArtProvider::GetNativeSizeHint(wxART_TOOLBAR)
,但在任何情况下,由于位图大小是从与添加到工具栏的工具相关联的位图大小自动推导出来的,因此通常没有必要显式调用 setToolBitmapSize/2
。
备注:请注意,这是您传递给 addTool/6
的位图的大小,而不是工具按钮的最终大小。
请参阅
调用以确定是否已启用工具(响应用户输入)。
返回:如果工具已启用,则返回 true,否则返回 false。
请参阅:enableTool/3
-spec getToolLongHelp(This, ToolId) -> unicode:charlist() when This :: wxToolBar(), ToolId :: integer().
返回给定工具的长帮助。
请参阅
返回用于打包工具的值。
请参阅:setToolPacking/2
返回工具在工具栏中的位置,如果未找到该工具,则返回 wxNOT_FOUND
。
返回默认的分隔符大小。
-spec getToolShortHelp(This, ToolId) -> unicode:charlist() when This :: wxToolBar(), ToolId :: integer().
返回给定工具的简短帮助。
请参阅
返回整个按钮的大小,由于添加了 3D 效果,通常比工具位图大。
请参阅
获取切换工具的开启/关闭状态。
返回:如果工具已切换为打开状态,则返回 true,否则返回 false。
请参阅:toggleTool/3
-spec insertControl(This, Pos, Control) -> wx:wx_object() when This :: wxToolBar(), Pos :: integer(), Control :: wxControl:wxControl().
-spec insertControl(This, Pos, Control, [Option]) -> wx:wx_object() when This :: wxToolBar(), Pos :: integer(), Control :: wxControl:wxControl(), Option :: {label, unicode:chardata()}.
将控件插入到工具栏中的给定位置。
您必须调用 realize/1
才能使更改生效。
请参阅
-spec insertSeparator(This, Pos) -> wx:wx_object() when This :: wxToolBar(), Pos :: integer().
将分隔符插入到工具栏中的给定位置。
您必须调用 realize/1
才能使更改生效。
请参阅
-spec insertStretchableSpace(This, Pos) -> wx:wx_object() when This :: wxToolBar(), Pos :: integer().
在给定位置插入可伸缩空间。
有关可伸缩空间的详细信息,请参阅 addStretchableSpace/1
。
请参阅
起始版本:2.9.1
-spec insertTool(This, Pos, Tool) -> wx:wx_object() when This :: wxToolBar(), Pos :: integer(), Tool :: wx:wx_object().
-spec insertTool(This, Pos, ToolId, Label, Bitmap) -> wx:wx_object() when This :: wxToolBar(), Pos :: integer(), ToolId :: integer(), Label :: unicode:chardata(), Bitmap :: wxBitmap:wxBitmap().
-spec insertTool(This, Pos, ToolId, Label, Bitmap, [Option]) -> wx:wx_object() when This :: wxToolBar(), Pos :: integer(), ToolId :: integer(), Label :: unicode:chardata(), Bitmap :: wxBitmap:wxBitmap(), Option :: {bmpDisabled, wxBitmap:wxBitmap()} | {kind, wx:wx_enum()} | {shortHelp, unicode:chardata()} | {longHelp, unicode:chardata()} | {clientData, wx:wx_object()}.
将具有指定属性的工具插入到工具栏中的给定位置。
您必须调用 realize/1
才能使更改生效。
请参阅
返回:新插入的工具,如果失败则返回 NULL。请注意,对于采用 tool
参数的重载,调用者负责在后一种情况下删除该工具。
在添加工具后应调用此函数。
-spec removeTool(This, Id) -> wx:wx_object() when This :: wxToolBar(), Id :: integer().
从工具栏中移除给定的工具,但不删除它。
这允许稍后将此工具插入/添加回此(或其他)工具栏。
注意:无需调用 realize/1
来使更改生效,它会立即发生。
请参阅:deleteTool/2
设置用作工具栏边距的值。
备注:如果要使用绝对定位,并且要覆盖默认(零大小)边距,则必须在添加工具之前调用此方法。
请参阅:getMargins/1
-spec setToolBitmapSize(This, Size) -> ok when This :: wxToolBar(), Size :: {W :: integer(), H :: integer()}.
设置每个工具位图的默认大小。
默认的位图大小为 16 x 15 像素。
备注:应该调用此方法来告诉工具栏工具位图的大小。在添加工具之前调用它。
请参阅
-spec setToolLongHelp(This, ToolId, HelpString) -> ok when This :: wxToolBar(), ToolId :: integer(), HelpString :: unicode:chardata().
设置给定工具的长帮助。
备注:您可以使用长帮助在状态栏上显示工具的用途。
请参阅
设置用于分隔工具的值。
默认值为 1。
备注:如果工具栏是水平的,则打包用于垂直方向上的间距;如果工具栏是垂直的,则打包用于水平方向上的间距。
请参阅:getToolPacking/1
设置默认的分隔符大小。
默认值为 5。
请参阅:addSeparator/1
-spec setToolShortHelp(This, ToolId, HelpString) -> ok when This :: wxToolBar(), ToolId :: integer(), HelpString :: unicode:chardata().
设置给定工具的简短帮助。
备注:应用程序可以使用短帮助在工具提示中标识工具的用途。
请参阅
-spec toggleTool(This, ToolId, Toggle) -> ok when This :: wxToolBar(), ToolId :: integer(), Toggle :: boolean().
打开或关闭工具。
这不会导致发出任何事件。
备注:仅适用于已指定为切换工具的工具。