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:适合 平级切换、高频访问 的多模块界面(如多文档/多视图)。
根据具体需求选择合适的容器控件,可以显著提升用户界面的易用性和空间效率