Tool Box是一個多層次的折疊面板,通常用于組織多個可展開/折疊的面板組,每個面板有一個標題欄,用戶點擊標題欄可以展開或收起內容區域。比如設置界面中的分類選項,每個分類可以展開查看詳細內容。這樣能節省空間,讓界面更簡潔。
Tab Widget是標簽頁控件,它通過標簽頁切換不同的內容面板。每個標簽頁對應一個獨立的內容區域,用戶點擊標簽即可切換顯示的內容。常見的例子是瀏覽器的多個標簽頁,或者設置對話框中的不同選項卡。
Tool Box適合內容層級較多且需要折疊展開的情況,用戶可能不同時查看所有內容;
Tab Widget適合平級的內容切換,用戶需要在不同頁面間快速切換,同時保持每個頁面的獨立性。
還要考慮用戶可能的應用場景。比如,如果設計的是一個配置工具,可能需要用Tool Box將不同類別的設置分組折疊;如果是多文檔編輯器,可能用Tab Widget來管理多個打開的文檔。
注意選擇時的因素,比如界面空間、用戶操作習慣、內容的組織方式等。例如,如果內容項很多且用戶需要頻繁切換,Tab Widget可能更合適;如果內容需要分層次展示且需要節省空間,Tool Box更合適。
- QToolBox(工具箱控件)
用途
分層折疊面板:QToolBox 是一個 垂直堆疊的折疊容器,每個子面板(稱為“工具頁”)帶有一個標題欄,點擊標題欄可以展開或折疊對應的內容區域。
空間節省:適用于內容較多但需要按需展示的場景,用戶可以通過展開/折疊操作按需查看特定內容。
典型場景
配置界面中的分類設置(如 IDE 的選項對話框)。
工具箱面板(如 Qt Designer 左側的控件列表)。
分步驟的向導界面(不同步驟折疊展示)。
示例
QToolBox *toolBox = new QToolBox(this);
// 添加工具頁
QWidget *page1 = new QWidget;
QWidget *page2 = new QWidget;
toolBox->addItem(page1, QIcon(":/icons/settings.png"), "基本設置");
toolBox->addItem(page2, QIcon(":/icons/advanced.png"), "高級設置");
- QTabWidget(標簽頁控件)
用途
標簽式導航:QTabWidget 通過頂部的標簽欄(或底部/側邊)切換多個子面板(稱為“標簽頁”),每個標簽頁完全獨立。
平級內容切換:適用于需要用戶在不同內容模塊間頻繁切換的場景,所有標簽頁內容平級展示。
典型場景
多文檔編輯器(如瀏覽器的標簽頁)。
設置對話框中的分頁配置(如“常規”、“網絡”、“外觀”標簽)。
數據展示界面(如統計報表的不同視圖)。
示例
QTabWidget *tabWidget = new QTabWidget(this);// 添加標簽頁
QWidget *tab1 = new QWidget;
QWidget *tab2 = new QWidget;
tabWidget->addTab(tab1, "常規");
tabWidget->addTab(tab2, "高級");
3 QToolBox 和 QTabWidget 的關鍵區別
特性 QToolBox QTabWidget
布局方式 垂直堆疊,可折疊 標簽頁平鋪,固定顯示
空間占用 節省空間(僅展開一個面板) 需要固定空間(所有標簽頁共存)
交互方式 點擊標題欄展開/折疊 點擊標簽切換頁面
適用場景 層級化內容、低頻切換 平級內容、高頻切換
視覺復雜度 更簡潔(適合簡單分類) 更直觀(適合復雜多模塊)
選擇 QToolBox:
需要按需展開內容、節省空間,且內容層級清晰(如設置項的分類折疊)。選擇 QTabWidget:
需要快速切換多個獨立內容模塊,且所有標簽頁需要保持可見性(如多文檔編輯器)。
總結
QToolBox:適合 垂直折疊、按需查看 的內容組織(如設置分類)。
QTabWidget:適合 平級切換、高頻訪問 的多模塊界面(如多文檔/多視圖)。
根據具體需求選擇合適的容器控件,可以顯著提升用戶界面的易用性和空間效率