当前位置: 首页 > news >正文

Qt QToolBox 组件总结

Qt QToolBox 组件总结

1. 概述
  • 用途QToolBox 是一个垂直堆叠的可折叠面板容器,每个面板通过标签切换显示。适用于需要节省空间的界面设计(如工具选项板、设置窗口)。
  • 特点:一次仅显示一个面板,点击标签展开内容,其他面板自动折叠。继承自 QFrame,支持样式自定义。
2. 创建与基本用法
  • 头文件#include <QToolBox>
  • 添加页面
    QToolBox *toolBox = new QToolBox;
    QWidget *page1 = new QWidget;
    QWidget *page2 = new QWidget;
    // 添加页面(参数:内容控件、图标、标签文本)
    toolBox->addItem(page1, QIcon(), "Page 1");
    toolBox->addItem(page2, "Page 2"); // 无图标版本
    
3. 常用方法与属性
  • 页面管理
    • int currentIndex():获取当前页面索引。
    • void setCurrentIndex(int index):切换页面。
    • int count():返回页面总数。
  • 标签与图标
    • QString itemText(int index) / void setItemText(int index, const QString &text):获取/设置标签文本。
    • QIcon itemIcon(int index) / void setItemIcon(int index, const QIcon &icon):获取/设置标签图标。
  • 页面控件
    • QWidget *widget(int index):获取指定页面的控件。
4. 信号与槽
  • 关键信号
    • currentChanged(int index):当前页面切换时触发。
  • 示例连接
    connect(toolBox, &QToolBox::currentChanged, [](int index) {
        qDebug() << "当前页面索引:" << index;
    });
    
5. 样式与外观
  • QSS 示例
    QToolBox::tab {
        background: #f0f0f0;
        border: 1px solid #ccc;
        padding: 5px;
    }
    QToolBox::tab:selected { /* 选中标签样式 */ }
    
6. 注意事项
  • 布局管理:每个页面内的控件需合理布局(使用 QVBoxLayout 等),避免内容显示异常。
  • 动态更新:修改页面内容时,通过 widget(index) 获取控件后调整。
  • 索引安全:动态增删页面时,确保索引有效(避免越界)。
7. 与 QTabWidget 的区别
  • 布局方向QToolBox 垂直排列标签,适合紧凑空间;QTabWidget 水平/垂直标签栏,适合多页平铺。
  • 交互方式QToolBox 标签带折叠箭头,展开内容在下方;QTabWidget 直接切换标签对应内容区域。
8. 完整示例代码
#include <QApplication>
#include <QToolBox>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLabel>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QWidget window;
    QVBoxLayout *layout = new QVBoxLayout(&window);

    QToolBox *toolBox = new QToolBox;
    // 创建页面1
    QWidget *page1 = new QWidget;
    QPushButton *button = new QPushButton("按钮", page1);
    QVBoxLayout *page1Layout = new QVBoxLayout(page1);
    page1Layout->addWidget(button);
    // 创建页面2
    QWidget *page2 = new QWidget;
    QLabel *label = new QLabel("这是一个标签", page2);
    QVBoxLayout *page2Layout = new QVBoxLayout(page2);
    page2Layout->addWidget(label);
    
    toolBox->addItem(page1, "工具");
    toolBox->addItem(page2, QIcon(), "信息");
    layout->addWidget(toolBox);
    
    window.show();
    return a.exec();
}
9. 扩展功能
  • 禁用页面:通过 setItemEnabled(int index, bool enabled) 控制标签是否可点击。
  • 动态增删:使用 removeItem(int index) 移除页面,或 insertItem(int index, QWidget *w, const QString &text) 插入页面。

相关文章:

  • MySQL 事务:确保数据一致性的核心机制
  • 基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)
  • 【JavaEE进阶】Spring MVC(3)
  • C# 实现完善 Excel 不规则合并单元格数据导入
  • Cherry-Studio下载安装教程,AI面向开发者的工具或平台(付安装包)
  • R软件用潜在类别混合模型LCM分析老年人抑郁数据轨迹多变量建模研究
  • C++效率掌握之STL库:list函数全解
  • el-select:有关多选,options选项值不包含绑定值的回显问题
  • AI前端开发技能提升与ScriptEcho:拥抱智能时代的新机遇
  • 基于Java EE“陕西农特产品”网络交易平台设计与实现(源码+文档)
  • 乾崑版再添两大版型,全新岚图梦想家推动高阶智驾平权
  • 为什么视频编码是对YUV而不是RGB
  • 零基础学python(持续更新中。。。)
  • 市场波动中的数据分析与策略优化
  • 寒假总结。
  • JAVA中常用类型
  • 网页五子棋——对战前端
  • Qt:容器类控件
  • 51c深度学习~合集1
  • jdk从1.7升级为1.8需要注意什么
  • 金正恩观摩朝鲜人民军各兵种战术综合训练
  • 彭丽媛同巴西总统夫人罗桑热拉参观中国国家大剧院
  • 佩斯科夫:若普京认为必要,将公布土耳其谈判俄方代表人选
  • SIFF动画单元公布首批片单:《燃比娃》《凡尔赛玫瑰》等
  • 上海北外滩开发建设五周年交出亮眼答卷,未来五年有何新目标?
  • 比特币挖矿公司GRYP股价涨超171%:将与特朗普儿子创设的公司合并