Qt的QToolBox的使用

QToolBox 是 Qt 框架中的一个控件,用于创建一个可折叠的“工具箱”界面(类似 Windows 资源管理器的侧边栏)。每个子项可以展开或折叠,适合用于分组显示多个功能模块。以下是其基本用法和示例:


1. 基本用法

创建并添加子项
#include <QToolBox>
#include <QLabel>
#include <QPushButton>// 创建 QToolBox 对象
QToolBox *toolBox = new QToolBox(parent);// 添加子项(页面)
QWidget *page1 = new QWidget;
QLabel *label1 = new QLabel("Page 1 Content");
QPushButton *button1 = new QPushButton("Button 1");// 将控件添加到 page1 的布局中
QVBoxLayout *layout1 = new QVBoxLayout(page1);
layout1->addWidget(label1);
layout1->addWidget(button1);// 将 page1 添加到 toolBox 并设置标题
toolBox->addItem(page1, "Page 1");// 添加第二个页面
QWidget *page2 = new QWidget;
QLabel *label2 = new QLabel("Page 2 Content");
QVBoxLayout *layout2 = new QVBoxLayout(page2);
layout2->addWidget(label2);
toolBox->addItem(page2, "Page 2");

2. 关键功能

切换当前页面
// 切换到索引为 1 的页面(从 0 开始)
toolBox->setCurrentIndex(1);
获取当前页面索引
int currentIndex = toolBox->currentIndex();
响应页面切换事件
// 连接信号槽:当页面切换时触发
connect(toolBox, &QToolBox::currentChanged, [](int index) {qDebug() << "当前页面索引:" << index;
});

3. 样式定制

通过 Qt 样式表可以美化 QToolBox

toolBox->setStyleSheet("QToolBox::item {""    background: #f0f0f0;""    border: 1px solid #ccc;""    padding: 5px;""}""QToolBox::item:selected {""    background: #e0e0e0;""}"
);

4. 动态增删页面

插入页面
QWidget *newPage = new QWidget;
toolBox->insertItem(1, newPage, "New Page");
移除页面
// 移除索引为 1 的页面
toolBox->removeItem(1);

5. 完整示例

#include <QApplication>
#include <QToolBox>
#include <QVBoxLayout>
#include <QLabel>
#include <QPushButton>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;QVBoxLayout *mainLayout = new QVBoxLayout(&window);QToolBox *toolBox = new QToolBox;// 添加页面 1QWidget *page1 = new QWidget;QLabel *label1 = new QLabel("This is Page 1");QPushButton *btn1 = new QPushButton("Click Me");QVBoxLayout *layout1 = new QVBoxLayout(page1);layout1->addWidget(label1);layout1->addWidget(btn1);toolBox->addItem(page1, "Page 1");// 添加页面 2QWidget *page2 = new QWidget;QLabel *label2 = new QLabel("This is Page 2");QVBoxLayout *layout2 = new QVBoxLayout(page2);layout2->addWidget(label2);toolBox->addItem(page2, "Page 2");mainLayout->addWidget(toolBox);window.show();return app.exec();
}

注意事项

  • 布局管理:每个页面的内容需要单独设置布局(如 QVBoxLayout),否则控件可能无法正确显示。
  • 内存管理:删除 QToolBox 时会自动删除其所有子页面。
  • 信号扩展:除了 currentChanged,还可以监听其他信号如 itemInserted(int index)itemRemoved(int index)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/70151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《DeepSeek 一站式工作生活 AI 助手》

最近国产AI工具DeepSeek在全球火出圈&#xff0c;登顶多个国家应用商店&#xff0c;下载量一路飙升。这匹AI “黑马” 到底凭什么征服全球用户&#xff1f;让我们全方位解锁DeepSeek——从基础入门到高阶玩法&#xff0c;从实用技巧到隐藏功能。 DeepSeek是一款功能强大的国产A…

Java中CompletableFuture异步工具类

参考&#xff1a;CompletableFuture 详解 | JavaGuide 实际项目中&#xff0c;一个接口可能需要同时获取多种不同的数据&#xff0c;然后再汇总返回&#xff0c;举个例子&#xff1a;用户请求获取订单信息&#xff0c;可能需要同时获取用户信息、商品详情、物流信息、等数据。…

Oracle Rac 多路径链路不稳定引发IO降速-光弱

一、背景 今天突然被异地的同事拉来开远程会议&#xff0c;会议内容是开发反馈每天9点左右有个sqlldr 命令的脚本调用突然执行很慢&#xff0c;以前几秒的导入操作现在需要30-60s左右&#xff0c;而且数据量基本相同。 二、分析 1&#xff09;、查看ASH报告 从报告上确认是数…

哈希表-两个数的交集

代码随想录-刷题笔记 349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09; 内容: 集合的使用 , 重复的数剔除掉&#xff0c;剩下的即为交集&#xff0c;最后加入数组即可。 class Solution {public int[] intersection(int[] nums1, int[] nums2) {Set<Integer…

[JVM篇]分代垃圾回收

分代垃圾回收 分代收集法是目前大部分 JVM 所采用的方法&#xff0c;其核心思想是根据对象存活的不同生命周期将内存划分为不同的域&#xff0c;一般情况下将 GC 堆划分为老生代(Tenured/Old Generation)和新生代(Young Generation)。老生代的特点是每次垃圾回收时只有少量对象…

汉诺塔问题详解:递归与分治的经典案例

嘿&#xff0c;小伙伴们&#xff01;今天我可算撞见了个超有意思的东西&#xff0c;就是那大名鼎鼎的汉诺塔问题&#xff01;我这好奇心一下子就被勾起来了&#xff0c;迫不及待地想深挖一下&#xff0c;然后把那些好玩的、烧脑的、让人拍案叫绝的解题思路和奇妙故事都分享给大…

vue中如何动态的增减组件的类名(class)

在 Vue.js 2 中&#xff0c;你可以通过计算属性或直接在模板中使用 v-bind:class 来动态地改变组件的类名。下面是一个简单的示例&#xff0c;说明如何在某个条件被复核后为组件添加一个 selected 类&#xff08;此处为组件添加一个默认的类&#xff08;例如 radio&#xff09;…

Vue3 基础概念与环境搭建

一、Vue3 简介 Vue3 是 Vue.js 的最新主要版本&#xff0c;于 2020 年 9 月正式发布。它在性能、可维护性和开发体验方面都有了显著的改进。相比 Vue2&#xff0c;Vue3 的主要特点包括&#xff1a; 更高效的响应式系统&#xff1a;使用 Proxy替代了 Object.defineProperty&…

华为昇腾920b服务器部署DeepSeek翻车现场

最近到祸一台HUAWEI Kunpeng 920 5250&#xff0c;先看看配置。之前是部署的讯飞大模型&#xff0c;发现资源利用率太低了。把5台减少到3台&#xff0c;就出了他 硬件配置信息 基本硬件信息 按照惯例先来看看配置。一共3块盘&#xff0c;500G的系统盘&#xff0c; 2块3T固态…

Python的那些事第二十三篇:Express(Node.js)与 Python:一场跨语言的浪漫邂逅

摘要 在当今的编程世界里,Node.js 和 Python 像是两个性格迥异的超级英雄,一个以速度和灵活性著称,另一个则以强大和优雅闻名。本文将探讨如何通过 Express 框架将 Node.js 和 Python 结合起来,打造出一个高效、有趣的 Web 应用。我们将通过一系列幽默风趣的实例和表格,展…

Word中接入大模型教程

前言 为什么要在word中接入大模型呢&#xff1f; 个人觉得最大的意义就是不用来回切换与复制粘贴了吧。 今天分享一下昨天实践的在word中接入大模型的教程。 在word中接入大模型最简单的方式就是使用vba。 vba代码要做的事&#xff0c;拆分一下就是&#xff1a; 获取用户…

open3d绘制平面

在Open3D中绘制平面通常涉及到创建一个平面模型并将其可视化。Open3D是一个开源库,主要用于3D数据的处理和可视化,但它主要用于3D数据的处理,并不直接支持绘制2D平面。如果你想在Open3D中“绘制”一个平面,你可以通过以下几种方法来实现类似的效果: 方法1:使用o3d.geome…

DeepSeek R1 与 OpenAI O1:机器学习模型的巅峰对决

我的个人主页 我的专栏&#xff1a;人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞&#x1f44d;收藏❤ 一、引言 在机器学习的广袤天地中&#xff0c;大型语言模型&#xff08;LLM&#xff09;无疑是最…

WebGPU顶点插槽进阶优化指南:释放GPU渲染性能

本文基于WebGPU官方规范与实践经验&#xff0c;深入探讨顶点缓冲区的性能优化策略&#xff0c;涵盖数据布局、资源管理、渲染流程等多个维度&#xff0c;并附详细代码注释与性能对比分析。 一、数据布局优化&#xff1a;降低内存与带宽压力 1. 内存对齐策略 GPU对内存访问有严…

数据结构实现顺序表的尾插,尾删,按值查找/修改/删除,按下标查找/增加/删除

头文件&#xff1a;head.h #ifndef __HEAD_H__ #define __HEAD_H__#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXSIZE 20enum num {success,false-1};typedef int datatype;typedef struct {int len;datatype data[MAXSIZE]; }S…

基于Spring Boot+Vue的宠物服务管理系统(源码+文档)

项目简介 宠物服务管理系统实现了以下功能&#xff1a; 基于Spring BootVue的宠物服务管理系统的主要使用者分为用户管理模块&#xff0c;由于系统运行在互联网络中&#xff0c;一些游客或者病毒恶意进行注册&#xff0c;产生大量的垃圾用户信息&#xff0c;管理员可以对这些…

2. grafana插件安装并接入zabbix

一、在线安装 如果不指定安装位置&#xff0c;则默认安装位置为/var/lib/grafana/plugins 插件安装完成之后需要重启grafana 命令在上一篇讲到过 //查看相关帮助 [rootlocalhost ~]# grafana-cli plugins --help //从列举中的插件过滤zabbix插件 [rootlocalhost ~]# grafana…

【Linux】Ubuntu Linux 系统——Python集成开发环境

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天周四了&#xff0c;明天就周五了&#xff0c;再坚持坚持又能休息了&#xff01;&#xff01;&#x1f606; 本文是有关Linux 操作系统中Python集成开发环境基础知识&#xff0c;后续将添加更多相关知识噢&#xff0c;谢谢各位…

DeepSeek+即梦 做AI视频

DeepSeek做AI视频 制作流程第一步&#xff1a;DeepSeek 生成视频脚本和分镜 第二步&#xff1a;生成分镜图片绘画提示词第三步&#xff1a;生成分镜图片第四步&#xff1a;使用可灵 AI 工具&#xff0c;将生成的图片转成视频。第五步&#xff1a;剪映成短视频 DeepSeek 真的强&…

react传递函数与回调函数原理

为什么 React 允许直接传递函数&#xff1f; 回调函数核心逻辑 例子&#xff1a;父组件控制 Modal 的显示与隐藏 // 父组件 (ParentComponent.tsx) import React, { useState } from react; import { Modal, Button } from antd; import ModalContent from ./ModalContent;co…