<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 12.1 wxTreeCtrl 樹狀控件以層的形式展示信息,它的子項可以展開也可以合并.下圖演示了wxWidgets的樹狀控件例子,它正以不同的字體和風格以及顏色進行展示.每一個樹狀控件的子項都代表一個wxtreeItemId對象,它擁有一個文本標簽和一個可選圖標,并且文本和圖標的內容都可以動態修改.樹狀控件可以以單選或者多選的形式創建.如果你希望在wxtreeItemId上綁定一些數據,你需要實現自己的wxTreeItemData派生類,然后調用 wxTreeCtrl::SetItemData函數以及wxTreeCtrl::GetItemData函數.這個數據在子項被釋放的時候將會被一并釋放(delete調用),如果你將其指向你實際的數據,需要注意避免重復釋放. ![](img/mht8FFD%281%29.tmp) 因為應用程序可以檢測到樹狀控件的子項被單擊的事件,你可以用這個特點通過更改子項的圖片來達到模擬其他的控件的目的.比如說,你可以很容易用樹狀控件的子項來模擬一個復選框. 下面的代碼演示了怎樣創建一個樹狀控件,定義其子項的綁定數據以及圖片: ``` #include "wx/treectrl.h" // 聲明一個代表和子項綁定的數據的類 class MyTreeItemData : public wxTreeItemData { public: MyTreeItemData(const wxString& desc) : m_desc(desc) { } const wxString& GetDesc() const { return m_desc; } private: wxString m_desc; }; // 子項相關的圖片 #include "file.xpm" #include "folder.xpm" // 創建一個樹狀控件 wxTreeCtrl* treeCtrl = new wxTreeCtrl( this, wxID_ANY, wxPoint(0, 0), wxSize(400, 400), wxTR_HAS_BUTTONS|wxTR_SINGLE); wxImageList* imageList = new wxImageList(16, 16); imageList->Add(wxIcon(folder_xpm); imageList->Add(wxIcon(file_xpm); treeCtrl->AssignImageList(imageList); // 根節點使用文件夾圖標,而兩個字節點使用文件圖標 wxTreeItemId rootId = treeCtrl->AddRoot(wxT("Root"), 0, 0, new MyTreeItemData(wxT("Root item"))); wxTreeItemId itemId1 = treeCtrl->AppendItem(rootId, wxT("File 1"), 1, 1, new MyTreeItemData(wxT("File item 1"))); wxTreeItemId itemId2 = treeCtrl->AppendItem(rootId, wxT("File 2"), 1, 1, new MyTreeItemData(wxT("File item 2"))); ``` wxTreeCtrl的窗口類型 wxTreeCtrl有如下表所示的額外的窗口類型: | wxtr_DEFAULT_STYLE | 這個值是各個平臺上樹狀控件實現和默認值最接近的值 | |:--- |:--- | | wxtr_EDIT_LABELS | 是否子項文本可編輯 | | wxtr_NO_BUTTONS | 不必顯示用于展開或者合并子項的按鈕 | | wxtr_HAS_BUTTONS | 顯示用于展開或者合并子項的按鈕 | | wxTR_NO_LINES | 不必顯示用于表示層級關系的垂直虛線 | | wxtr_FULL_ROW_HIGHLIGHT | 當選中某個子項的時候高亮顯示整行(在windows平臺上,除非設置了wxtr_NO_LINES,否則這個類型將被忽略) | | wxtr_LINES_AT_ROOT | 不必顯示根節點之間的連線.這個類型只有在設置wxtr_HIDE_ROOT 并且沒有設置wxtr_NO_LINES 的時候有效 | | wxtr_HIDE_ROOT | 不顯示根節點,這將導致第一層的字節點成為一系列根節點 | | wxtr_ROW_LINES | 使用這個類型在已顯示的行之間繪制一個高對比的邊界 | | wxTR_HAS_VARIABLE_ROW_HEIGHT | 設置這個類型允許各行采用不同的高度,否則各行都將采用和最大的行高同樣的高度.這個類僅適用于樹狀控件的標準實現(而非各個平臺的原生實現) | | wxtr_SINGLE | 單選模式 | | wxtr_MULTIPLE | 多選模式 | | wxtr_EXTENDED | 允許多選非連續的子項(該功能僅是部分實現) | wxTreeCtrl的事件 樹狀控件產生wxtreeEvent類型的事件,這種事件可以在父子關系的窗口之間傳遞. | EVT_TREE_BEGIN_DRAG(id, func)EVT_TREE_BEGIN_RDRAG(id, func) | 在用戶開始拖放操作的時候產生,這個事件的使用細節請參考第11章,"剪貼板和拖放操作" | |:--- |:--- | | EVT_TREE_BEGIN_LABEL_EDIT(id, func) EVT_TREE_END_LABEL_EDIT(id, func) | 當用戶開始編輯或者剛剛完成編輯子項標簽的時候產生 | | EVT_TREE_DELETE_ITEM(id, func) | 當某個子項被刪除的時候產生 | | EVT_TREE_GET_INFO(id, func) | 當某個子項的數據被請求的時候產生 | | EVT_TREE_SET_INFO(id, func) | 當某個子項的數據被設置的時候產生 | | EVT_TREE_ITEM_ACTIVATED(id, func) | 當某個子項被激活(雙擊或者使用鍵盤選擇)的時候產生 | | EVT_TREE_ITEM_COLLAPSED(id, func) | 給定的子項已被收縮(合并)的時候產生 | | EVT_trEE_ITEM_COLLAPSING(id, func) | 給定的子項即將收縮(合并)的時候產生,這個事件可以被Veto以阻止收縮. | | EVT_TREE_ITEM_EXPANDED(id, func) | 給定子項已被展開的時候產生 | | EVT_TREE_ITEM_EXPANDING(id, func) | 給定子項即將展開的時候產生,這個事件可以被Veto以阻止展開 | | EVT_TREE_SEL_CHANGED(id, func) | 選中的子項發生變化以后(新的子項被選中或者舊的選中項不被選中的時候)產生 | | EVT_TREE_SEL_CHANGING(id, func) | 選中的子項即將發生變化的時候產生,該事件可以被Veto以阻止變化產生 | | EVT_TREE_KEY_DOWN(id, func) | 檢測針對該樹狀控件的鍵盤事件 | | EVT_TREE_ITEM_GET_TOOLTIP(id, func) | 這個事件僅支持windows平臺,它使得你可以給某個子項設置單獨的工具提示 | wxTreeCtrl的成員函數 下面列出了wxTreeCtrl控件的一些重要的成員函數. 使用AddRoot函數增加第一個子項,然后使用AppendItem, InsertItem或PrependItem來增加隨后的子項.使用Delete移除一個子項,使用DeleteAllItems刪除某個子項所有的子項,或者使用DeleteChildren刪除某個子項的所有直接子項. 使用SetItemText設置某個子項的標簽,使用SetItemTextColour,SetItemBackgroundColour,SetItemBold和SetItemFont來設置標簽的外觀. 如果你想給某個子項指定一幅圖片,首先需要使用SetImageList函數將某個圖片列表和這個樹狀控件綁定.每個子項可以指定四個狀態的圖片,分別是wxTReeItemIcon_Normal,wxTReeItemIcon_Selected, wxtreeItemIcon_Expanded和wxTReeItemIcon_SelectedExpanded,你可以使用 SetItemImage函數給每個狀態指定一個圖片列表中圖片索引.如果你只給wxTReeItemIcon_Normal狀態指定了一個索引,那么別的狀態也將都使用這個圖片. 使用Scroll函數以便將某個子項移動到可見區域,使用EnsureVisible使得這個子項在需要的時候展開以便其可以位于可見區域.使用Expand函數展開某個子項,Collapse和CollapseAndReset函數合并某個子項,后者還將移除其所有的子項,如果你正在使用的樹狀控件有很多子項,你可能希望只增加可見部分的子項以便提高性能.在這種情況下,你可以處理EVT_TREE_ITEM_EXPANDING事件,在需要的時候才增加子項,在收縮的時候則移除所有子項.而且你還需要調用SetItemHasChildren函數以便沒有子項的子項也可以顯示一個可擴展按鈕,即使它真的沒有. 使用SelectItem選擇或者去選擇某個子項.如果是單選類型,你可以使用GetSelection函數得到正被選中的子項,如果當前沒有子項被選中,則返回一個未初始化的wxTReeItemId,你可以調用wxTreeItemId::IsOk函數來判斷其有效性.而對于多選類型,你可以使用GetSelections函數獲取當前選中的子項,你需要傳遞一個wxArrayTreeItemItemIds類型的引用作為參數. Unselect函數在單選情況下去選中當前的子項,而UnselectAll函數則用在多選情況下去選中所有正被選中的子項,UnselectItem 函數可以用來在多選情況下去選中某一個子項. 遍歷某個樹狀控件的所有子項也有多種方法:你可以先使用GetRootItem函數獲得根節點,然后使用GetFirstChild和 GetNextChild遍歷所有子項.使用GetNextSibling和GetPrevSibling獲取某個子項后一個和前一個兄弟節點.使用 ItemHasChildren函數判斷某個子項是否有字節點,使用GetParent函數獲取某個子項的父節點.GetCount函數則用來返回樹狀控件中所有子項的個數,而GetChildrenCount則返回某個子項的字節點的數目. HitTest函數在實現你自己拖放的時候是很有用的,它使得你可以通過鼠標位置找到這個位置對應的子項以及子項的某個特定部分.具體返回值請參考相關手冊中的內容.使用GetBoundingRect函數可以得到某個子項對應的矩形區域. 更多關于樹狀控件的信息請參考使用手冊以及samples/treectrl中的wxTreeCtrl例子.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看