檢視原始碼 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 為 16x15,而 GTK 為 24x24。這個大小不
一定表示在給定平台上工具列的最佳使用大小,為此您應該使用 wxArtProvider::GetNativeSizeHint(wxART_TOOLBAR)
,但在任何情況下,由於點陣圖大小是從與新增至工具列的工具相關聯的點陣圖大小自動推導出來的,因此通常不需要明確呼叫 setToolBitmapSize/2
。
備註:請注意,這是您傳遞給 addTool/6
的點陣圖大小,而不是工具按鈕的最終大小。
參見
呼叫以判斷工具是否已啟用(回應使用者輸入)。
回傳值:如果工具已啟用則回傳 true,否則回傳 false。
參見:enableTool/3
-spec getToolLongHelp(This, ToolId) -> unicode:charlist() when This :: wxToolBar(), ToolId :: integer().
傳回給定工具的長說明。
參見
傳回用於包裝工具的值。
傳回工具在工具列中的位置,如果找不到工具,則傳回 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。
備註:如果工具列是水平的,則間距用於垂直方向;如果工具列是垂直的,則間距用於水平方向。
設定預設分隔符號大小。
預設值為 5。
-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().
開啟或關閉工具。
這不會觸發任何事件。
備註:僅適用於已指定為切換工具的工具。