【Qt控件之QToolBox】介绍及使用

news2024/11/16 7:50:16

概述

QToolBox类提供了一个列式的带有选项卡的小部件条目。工具箱是一个小部件,以一个列式的选项卡显示在上方,并在当前选项卡下方显示当前的小部件条目。每个选项卡在选项卡列中有一个索引位置。选项卡的小部件条目是一个QWidget

每个小部件条目都有一个itemText()方法获取文本,可选的itemIcon()方法获取图标,itemToolTip()方法获取工具提示,以及widget()方法获取小部件。可以使用setItemText()、setItemIcon()和setItemToolTip()方法更改小部件条目的属性。可以使用setItemEnabled()方法单独启用或禁用每个小部件条目。

使用addItem()方法添加小部件条目,或使用insertItem()方法在特定位置插入小部件条目。使用count()方法获取小部件条目的总数。可以使用delete关键字删除小部件条目,或使用removeItem()方法从工具箱中移除小部件条目。结合removeItem()和insertItem()方法,可以将小部件条目移动到不同的位置。

使用currentIndex()方法返回当前小部件条目的索引,使用setCurrentIndex()方法设置当前小部件条目的索引。可以使用indexOf()查找特定小部件条目的索引,使用item()方法返回给定索引的小部件条目。

当前小部件条目改变时,会触发currentChanged()信号。

常用函数

  • addItem(QWidget *widget, const QString &text): 将一个小部件(widget)添加到工具箱中,并指定显示的文本。
  • insertItem(int index, QWidget *widget, const QString &text): 在指定位置(index)插入一个小部件(widget)到工具箱中,并指定显示的文本。
  • removeItem(int index): 从工具箱中移除指定位置(index)的小部件。
  • count(): 返回工具箱中小部件条目的总数。
  • currentIndex(): 返回当前选中的小部件条目的索引。
  • setCurrentIndex(int index): 设置当前选中的小部件条目的索引。
  • indexOf(QWidget *widget): 返回指定小部件(widget)在工具箱中的索引。
  • item(int index): 返回指定索引位置(index)的小部件条目。
  • setItemText(int index, const QString &text): 设置指定索引位置(index)的小部件条目的文本。
  • setItemIcon(int index, const QIcon &icon): 设置指定索引位置(index)的小部件条目的图标。
  • setItemToolTip(int index, const QString &toolTip): 设置指定索引位置(index)的小部件条目的工具提示。
  • setItemEnabled(int index, bool enabled): 设置指定索引位置(index)的小部件条目是否启用。

信号:

  • currentChanged(int index): 当前选中的小部件条目改变时触发该信号,返回变化后的索引。

槽:

  • void setCurrentIndex(int index):设置当前下标。
  • void setCurrentWidget(QWidget *widget):设置当前控件。

除了上述介绍的常用函数、枚举、信号和槽之外,QToolBox还提供了其他函数和特性,用于进一步定制和管理工具箱中的小部件条目。可以参考官方文档进一步了解QToolBox的全部功能和使用方法。

示例

以下代码,实现了添加小部件、移除小部件、设置小部件是否启用以及使用信号和槽改变当前小部件。

#include <QApplication>
#include <QToolBox>
#include <QPushButton>
#include <QLabel>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    
    QToolBox toolBox;

    // 添加小部件
    QPushButton *button1 = new QPushButton("Button 1");
    QLabel *label1 = new QLabel("Label 1");
    QPushButton *button2 = new QPushButton("Button 2");
    QLabel *label2 = new QLabel("Label 2");
    
    toolBox.addItem(button1, "Button 1");
    toolBox.addItem(label1, "Label 1");
    toolBox.addItem(button2, "Button 2");
    toolBox.addItem(label2, "Label 2");
    
    // 移除小部件
    // toolBox.removeItem(2); // 移除索引为2的小部件
    
    // 设置是否启用小部件
    // toolBox.setItemEnabled(1, false); // 禁用索引为1的小部件
    
    // 信号和槽
    QObject::connect(&toolBox, &QToolBox::currentChanged, [&](int index){
        qDebug() << "Current Index Changed: " << index;
    });
    
    QObject::connect(button1, &QPushButton::clicked, [&](){
        toolBox.setCurrentIndex(1); // 点击Button 1时,将当前小部件设置为索引为1的小部件
    });
    
    toolBox.show();

    return app.exec();
}

在这里插入图片描述
在示例中,创建了一个QToolBox,并添加了四个小部件:两个QPushButton和两个QLabel。可以通过调用addItem()函数将小部件添加到工具箱中,并使用设置的文本显示在选项卡中。如果要移除特定位置的小部件,可以使用removeItem()函数。要设置小部件是否启用,可以使用setItemEnabled()函数。

示例中使用信号和槽来响应当前选中小部件的变化。使用currentChanged()信号来捕获当前小部件的变化,并使用setCurrentIndex()槽来改变当前选中的小部件。

注意,示例中的槽使用了C++11的Lambda表达式,可以根据自己的需求使用不同的槽连接方式。

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

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

相关文章

婚纱摄影行业,还在使用电梯广告?不如试试大数据精准营销

以武汉为例&#xff0c;婚纱摄影的以薇拉&#xff0c;青禾&#xff0c;韩国艺匠&#xff0c;果石&#xff0c;等品牌为主&#xff0c;竞争尤其惨烈&#xff0c;婚纱摄像婚庆行业主要依赖于线下推广&#xff08;如依靠与酒店、婚礼策划等上下游产业合作&#xff09;&#xff0c;…

Google Colab免费GPU使用教程

目录 前言一、Google Colab介绍二、使用步骤1、创建谷歌云盘2、创建一个新的Colab Notebook3、设置免费的GPU4、挂载Google Drive5、运行代码 三、防止掉线措施四、参考 前言 有时候本地跑代码可能耗时比较久&#xff0c;而且还会耽误你本地电脑的使用&#xff0c;购买云服务器…

智能矩阵系统解决的问题?

智能矩阵系统可以解决的问题多种多样&#xff0c;它主要通过人工智能技术应用于矩阵系统&#xff0c;解决一些传统方法难以处理的问题。 以下是一些常见的应用场景&#xff1a; 1. 数据管理&#xff1a;智能矩阵系统可以有效地管理大量的数据&#xff0c;包括数据的存储、检索…

【已解决】Unity 使用NPOI 写word文档报错:System.TypeLoadException:……0.86.0.518

报错显示 System.TypeLoadException: Could not resolve type with token 01000080 from typeref (expected class ICSharpCode.SharpZipLib.Zip.UseZip64 in assembly ICSharpCode.SharpZipLib, Version0.86.0.518, Cultureneutral, PublicKeyToken1b03e6acf1164f73) at NPOI.…

C++初阶--类与对象(1)

文章目录 类的引入类的定义访问限定符类成员的注意事项变量名的冲突 类的实例化类成员的声明与定义类的大小this指针特性 总结 类的引入 在c语言中&#xff0c;我们会这样写一个栈&#xff1a; struct Stack {int* a;int top;int capacity; };void StackInit(struct Stack* p…

利用Bootstrap的分页组件实现分页效果

在网页开发过程中&#xff0c;如果碰到内容过多的情况&#xff0c;一般都会使用分页处理。 在<ul>元素上添加pagination类&#xff0c;在<li>元素上添加page-item类&#xff0c;在超链接中添加 page-link类&#xff0c;即可实现一个简单的分页。 目录 00-基础知识…

STM32项目工程的搭建

视频连接&#xff1a; [2-1]--入门 新建工程 及 工程搭建 -------------_哔哩哔哩_bilibili 1.STM32开发方式 1.标志库 表示直接调用已经写好的程序&#xff0c;通过类似于函数调用直接使用即可。 2.HAL库 程序员自己手动的操作寄存器进行编程 2.工程模板 3.搭建工程的步骤 1…

微信小程序OA会议系统数据交互

前言 经过我们所写的上一文章&#xff1a;微信小程序会议OA系统其他页面-CSDN博客 在我们的是基础面板上面&#xff0c;可以看到出来我们的数据是死数据&#xff0c;今天我们就完善我们的是数据 后台 在我们去完成项目之前我们要把我们的项目后台准备好资源我放在我资源中&…

Memcached和Memcache安装(64位win10)

Memcached和Memcache安装&#xff08;64位win10&#xff09; 一、Memcached和Memcache的区别&#xff1a;   网上关于Memcached和Memcache的区别的理解众说纷纭&#xff0c;我个人的理解是&#xff1a;   Memcached是一个内存缓存系统&#xff0c;而Memcache是php的一个扩展…

虚假KeePass网站利用Google Ads和Punycode推送恶意软件

导语 近日&#xff0c;一起利用Google Ads和Punycode进行恶意软件传播的事件引起了广泛关注。该事件利用虚假KeePass下载网站&#xff0c;通过Punycode编码伪装成KeePass密码管理器的官方域名&#xff0c;并在Google Ads广告中推广&#xff0c;诱导用户下载恶意软件。这种新型的…

C++初阶(四)类和对象

文章目录 一、面向过程和面向对象初步认识二、类的引入三、类的定义1、类的概述2、类的两种定义3、成员变量命名规则的建议 四、类的访问限定符及封装1、访问限定符2、封装 五、类的作用域六、类的实例化七、类对象模型1、如何计算类对象的大小2、 类对象的存储方式猜测3、 验证…

【rust/树莓派】使用rppalembedded-graphics控制st7789 LCD屏幕

说在前面 树莓派版本&#xff1a;4bLCD模块&#xff1a;ST7789V2 240*280 LCD树莓派系统&#xff1a;Linux raspberrypi 5.15.76-v8 #1597 SMP aarch64 GNU/Linuxrust版本&#xff1a;rustc 1.73.0 模块详情 某雪的1.69inch LCD模块&#xff0c;包含杜邦线 准备工作 树莓派…

JavaSE编程题目练习(一)

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名Coder&#xff0c;欢迎关注小弟&#xff01; 博主小留言&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟Cool&#xff0…

Rust 中的String与所有权机制

文章目录 一、string二、所有权2.1 所有权与作用域2.2 对所有权的操作2.2.1 转移2.2.3 拷贝2.2.3 传递 2.3 引用2.3.1 借用2.3.2 可变引用 一、string 之前学习过 Rust 只有几种基础的数据类型&#xff0c;但是没有常用的字符串也就是String&#xff0c;今天来学习一下 String…

Opensuse Tumbleweed快速部署K8S-1.28.2

** #查看你的网卡信息 nmcli device show#设置你的静态IP nmcli connection modify ens32 ipv4.method manual \ipv4.addresses 172.16.20.214/24 ipv4.gateway 172.16.20.1 \ipv4.dns 114.114.114.114#重启网卡生效 nmcli c down ens32 && nmcli c up ens32#添加DNS …

Java IDEA java.lang.IllegalStateException: Failed to introspect Class报错原因和解决办法

Java IDEA java.lang.IllegalStateException: Failed to introspect Class报错原因和解决办法 1. 报错如下&#xff1a;2. 解决 在maven右侧查看Dependencies冲突参考 1. 报错如下&#xff1a; 发现是因为 org.redisson:redisson.spring.boot.starter 3.10.6这个包引入不进来导…

如何使用 Canvas和HTML5中的SVG画一个矩形?

使用Canvas和SVG分别绘制矩形的方法如下&#xff1a; Canvas绘制矩形&#xff1a; <canvas id"canvas" width"200" height"200"></canvas><script>const canvas document.getElementById(canvas);const ctx canvas.getCon…

python随手小练6

1、汉诺塔 汉诺塔&#xff1a;汉诺塔&#xff08;又称河内塔&#xff09;问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放…

燃气管网智能巡检系统

燃气管网维护工作繁杂&#xff0c;涉及人员、资源、巡检等&#xff0c;稍一疏忽就会使我们的工作陷入被动&#xff0c;可见启用燃气管网智能巡检系统是很有必要的。 燃气管网智能巡检系统综合管理智能平台&#xff0c;可对燃气管网数据的统一管理&#xff0c;实现对日常巡查、养…

【Arduino TFT】基于 ESP32S3 S7789 240x240 TFT实现的龙猫太空人天气时钟

忘记过去&#xff0c;超越自己 ❤️ 博客主页 单片机菜鸟哥&#xff0c;一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-10-21 ❤️❤️ 本篇更新记录 2023-10-21 ❤️&#x1f389; 欢迎关注 &#x1f50e;点赞 &#x1f44d;收藏 ⭐️留言&#x1f4dd;&#x1f64…