选项卡式小部件QTabWidget

news2024/9/21 0:45:37

文章目录

  • 1. 详细介绍
  • 2. 常用属性
  • 3. 信号
  • 4. 常用函数
  • 5. 官方示例Tab Dialog

QTabWidget提供一堆选项卡式小部件。

1. 详细介绍

QTabWidget显示

选项卡式部件提供一个选项卡栏和一个用于显示与每个选项卡相关的页面的页面区域

默认情况下,选项卡栏显示在页面区域上方,可以使用不同的配置,设置TabPosition属性。

每个选项卡都与一个不同的小部件相关联,这个小部件成为页面。

页面区域中只显示当前页面,所有其他页面都被隐藏。可以通过单击选项卡或按下Alt+字母快捷键来显示不同的页面。

一般使用QTabWidget的方法如下操作:

  1. 创建一个QTabWidget对象;

  2. 为选项卡中的每个页面创建一个QWidget对象,该对象不要指定父窗口;

  3. 将子窗口小部件插入页面窗口小部件,使用布局将其正常定位;

  4. 调用addTab()或insertTab()函数将页面小部件放入选项卡小部件中,为每个选项卡页面提供一个合适的标签和一个可选的键盘快捷键。

    示例如下:

    // 1. 创建一个QTabWidget对象
    QTabWidget *tabWidget = new QTabWidget(this);
    // 2. 为选项卡中的页面创建QWidget对象,创建2个选项卡
    QWidget *page1 = new QWidget;
    QWidget *page2 = new QWidget;
    //3. 将子窗口小部件插入到页面中
    // page1页面插入一个按钮,page2页面插入一个标签
    QPushButton *btn = new QPushButton(tr("&Show"), page1);
    QLabel *label = new QLabel(tr("wait for show"), page2);
    // 4. 将页面添加到QTabWidget对象中,并为每个选项卡提供一个合适的标签和可选的键盘快捷键
    tabWidget->addTab(page1, tr("page-1"));
    tabWidget->addTab(page2, tr("page-2"));

显示如下:

page1

page2

选项卡的位置由tabPosition属性定义,默认在North;
形状由tabShape定义,默认是Rounded。

当选择一个页面时会发送currentChanged()信号。

当前页面的索引调用currentIndex()获取,当前页面的部件调用currentWidget()函数获取。

widget()函数获取给定索引的页面部件的指针,indexOf()函数查找部件的索引位置。

setCurrentWidget()或setCurrentIndex()显示特定页面。

可以调用setTabText()或setTabIcon()函数更改选项卡的文本和图标;

可以使用removeTab()函数删除选项卡及其关联页面。

调用setTabEnabled()可以启用或禁用选项卡页面。

  • 如果启用某个选项卡页面,会正常绘制该选项卡,并且可以选择该选项卡;
  • 如果禁用某个选项卡页面,以不同方式绘制该选项卡,且用户无法选择此选项卡。
    需要注意的是,即使禁用了某个页签,页面仍然是可见的。

选项卡是拆分复杂对话框的一种很好的方法。另一种选择是使用QStackedWidget,为其提供一些在页面之间导航的方法,比如QToolBar或QListWidget。

QTabWidget中的大部分功能由QToolBar(位于顶部,提供选项卡)和QStackedWidget(大部分区域,组织各个页面)提供。

2. 常用属性

除了继承自QWidget的属性外,QTabWidget类提供了一些常用的属性,如下:

属性类型及说明
countint,选项卡栏中的选项卡个数
currentIndexint,当前页面的索引,-1表示没有当前部件
documentModelbool,标志选项卡部件是否以适合文档页面的模式呈现。
true不会呈现选项卡部件框架,此时适用于显示文档类型
elideModeQt::TextElideMode,如何消隐选项卡栏中的文本。
控制当没有足够的空间显示给定选项卡栏大小的项目时,如何对其进行消隐。
iconSizeQSize,选项卡栏中图标的大小。
movablebool,用户是否可以在选项卡区域内移动选项卡。
tabBarAutoHidebool,如果为true,选项卡栏包含的选项卡少于2个时,该选项卡栏将自动隐藏。默认情况下,该属性为false。
tabPositionTabPosition,选项卡栏的位置
tabShapeTabShape,选项卡小部件中选项卡的形状。
tabsClosablebool,是否将关闭按钮自动添加到每个选项卡。
usesScrollButtonsbool,当选项卡栏有多个按钮时,此属性决定是否应使用按钮滚动选项卡。
当选项卡栏中的选项卡太多而无法容纳其大小时,选项卡栏可以选择扩展其大小,也可以选择添加允许滚动选项卡的按钮。

3. 信号

QTabWidget提供的信号有:

信号说明
currentChanged()页面索引发生变化时发送该信号
tabBarClicked()用户单击索引处的选项卡时,发出该信号。
tabBarDoubledClicked()用户双击索引处的选项卡时发出该信号。
tabCloseRequested()单击选项卡上的关闭按钮时发出此信号。

4. 常用函数

除了与获取和设置属性相关的函数外,QTabWidget还提供了一些有用的函数:

  • 插入页面函数
    addTab()/insertTab(),如果在show()之后调用该函数,布局系统将尝试根据其小部件层次结构的变化进行调整,可能导致闪烁。为了防止这种情况发生,可以在更改之前将updateEnabled属性设置为false,在完成更改之后将属性设置为true,使小部件再次接收绘制事件。

  • 删除或清空
    clear(),移除所有的页面,但是不删除它们。
    removeTab(),移除指定索引处的页面,部件本身不会被删除。

  • 选项卡栏相关
    tabBar(),获取QTabBar类对象。

5. 官方示例Tab Dialog

官方示例Tab Dialog显示了如何使用QTabWidget类构建选项卡对话框。

选项卡对话框示例由一个TabDialog类组成,该类提供三个选项卡,每个选项卡都包含有关特定文件的信息,以及两个用于接受或拒绝对话框内容的标准按钮。

相关文档说明及代码见:https://github.com/Innern/Qt/tree/master/Widgets/TabWidget。

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

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

相关文章

探索编程逻辑中的“卡特牛(continue)”魔法

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:卡特牛逻辑的魅力 二、卡特牛逻辑的解析 三、卡特牛逻辑的应用实例 …

安全厂商第一站!OASA 走进绿盟科技圆满结束

近日,龙蜥社区安全联盟(OASA)走进联盟成员单位绿盟科技集团股份有限公司(以下简称“绿盟科技”),就未来合作方向,双方进行了一次深入的合作交流。该会议共有 11 位人员出席,有来自绿…

【quarkus系列】创建quarkus第一个应用程序

文章目录 序言环境准备创建项目项目分析程序代码构建访问项目 序言 Quarkus 是一个设计用于 Kubernetes 和云原生环境的 Java 框架,具有快速启动时间、低内存消耗和强大的开发者体验。溪源将带您一步步创建一个简单的 Quarkus 应用程序。 环境准备 在开始之前&am…

C# 使用Aspose生成和修改文档

Aspose库 C#中的Aspose库是一个强大的文件处理库,可以用于各种文件格式的创建、编辑、转换和操作。该库提供了丰富的功能,包括处理文档、电子表格、幻灯片、PDF、图像等多种文件格式,能够轻松实现文件的读取、写入、格式化、样式设置、数据操…

[合集] MySQL 8.x 系列文章清单

↑ 关注“少安事务所”公众号,欢迎⭐收藏,不错过精彩内容~ 从去年7月到现在,自 MySQL 发版模型变更后,已经发布了四个版本,意味着 MySQL 8.x 系列进入了长期支持状态。 当然,目前主要推荐的版本依旧是 MySQ…

vscode中使用conda虚拟环境

每一次配置环境,真的巨烦,网上的资料一堆还得一个个尝试,遂进行整理 1.准备安装好Anaconda 附带一篇测试教程,安装anaconda 2.准备安装vscode 安装地址:Visual Studio Code 3.创建Conda环境 搜索框搜索Anaconda…

蓝桥杯物联网竞赛_STM32L071KBU6_字符串处理

前言: 个人感觉国赛相较于省赛难度上升的点在于对于接收的字符串的处理,例如串口发送的字符串一般包含字母字符串 数字字符串,亦或者更复杂,对于LORA也是如此,传递的字符串如#9#1亦或者#1a#90,#1#12,如何…

InTouch历史报警、历史事件按时段查询,导出

简介:本插件基于上位机组态InTouch的历史报警、操作记录而开发 适用InTouch版本:不限 适用Windows系统:不限 适用数据库:SQL Server 标记名点数:不限 配套软件安装:Excel、WPS、SQL Server 功能&…

C++拓展之scanf和printf

scanf和printf,这东西,说难也不难,可一旦深入学,学两天都可能学不完。 为了输入输出,我们要把这些占位符学一学。 我们来看看AI是怎么回答的。 Q:C格式化占位符有哪些? A:C中常用的…

OnlyFans使用过程中出现年龄验证,地址错误,支付失败,账户验证等问题的原因及解决办法

原文链接:OnlyFans 使用过程中出现年龄验证,地址错误,支付失败,账户验证等问题的解决方案 前言简述 OnlyFans主要以成人内容为主,是一个知名的付费订阅社交媒体分享平台。众多来自健身、音乐、艺术等领域的内容创作者…

哈希表详解及模拟实现(unordered_map)

目录 认识哈希表: 哈希冲突: 除留余数法--(常用) 平方取中法--(了解) 折叠法--(了解) 随机数法--(了解) 泛型编程: 闭散列: 线性探测: 二次探测: 扩容: 查找: 插入&#…

哆啦AAA萌也能用HTML画出来?看这里!【完整代码可运行】

关注微信公众号「ClassmateJie」有完整代码以及更多惊喜等待你的发现。 简介/效果展示 你是否曾经想过&#xff0c;那些可爱的哆啦A梦角色是如何被创造出来的呢&#xff1f;今天&#xff0c;我要带你一起探索一个神奇的秘密——用HTML画出哆啦A梦&#xff01; 代码 <!DOCT…

Nature Communications 南京大学开发智能隐形眼镜用于人机交互

近日&#xff0c;南京大学的研究人员研制了一种微型、难以察觉且生物相容的智能隐形眼镜&#xff08;smart contact lenses &#xff0c;SCL&#xff09;&#xff0c;可用于原位眼球追踪和无线眼机交互。采用频率编码策略&#xff0c;无芯片、无电池的镜头成功地检测眼球运动和…

消费增值:国家支持的消费新零售模型

在当下的消费时代&#xff0c;一个全新的概念——消费增值&#xff0c;正逐渐走进大众视野。它不仅仅是一种消费模式&#xff0c;更是一种全新的财富增长途径。那么&#xff0c;消费增值究竟是什么&#xff1f; 首先&#xff0c;消费增值的本质在于将消费行为与投资行为相结合…

Oracle数据库Day01-SELECT语句

一、SQL语句 1. 环境配置与准备 linux端oracle用户打开监听//查看监听状态与开始监听 lsnrctl status lsnrctl start开启数据库sqlplus / as sysdba startup;解锁hr用户样例数据库&#xff0c;给hr用户设置密码并且连接alter user hr account unlock; alter user hr identifie…

香橙派 AIpro开发体验:使用YOLOV8对USB摄像头画面进行目标检测

香橙派 AIpro开发体验&#xff1a;使用YOLOV8对USB摄像头画面进行目标检测 前言一、香橙派AIpro硬件准备二、连接香橙派AIpro1. 通过网线连接路由器和香橙派AIpro2. 通过wifi连接香橙派AIpro3. 使用vscode 通过ssh连接香橙派AIpro 三、USB摄像头测试1. 配置ipynb远程开发环境1.…

视觉SLAM十四讲:从理论到实践(Chapter5:相机与图像)

前言 学习笔记&#xff0c;仅供学习&#xff0c;不做商用&#xff0c;如有侵权&#xff0c;联系我删除即可 目标 理解针孔相机的模型、内参与径向畸变参数。理解一个空间点是如何投影到相机成像平面的。掌握OpenCV的图像存储与表达方式。学会基本的摄像头标定方法。 一、相…

【面试必看】Java并发

并发 1. 线程 1. 线程vs进程 进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位&#xff0c;因此进程是动态的。 系统运行一个程序即是一个进程从创建&#xff0c;运行到消亡的过程。在 Java 中&#xff0c;当我们启动 main 函数时其实就是启动了一个 JVM 的进…

CLIP源码详解:clip.py 文件

前言 这是关于 CLIP 源码中的 clip.py 文件中的代码带注释版本。 clip.py 文件的作用&#xff1a;封装了 clip 项目的相关 API&#xff0c;通过这些 API &#xff0c;我们可以轻松使用 CLIP 项目预训练好的模型进行自己项目的应用。 另外不太容易懂的地方都使用了二级标题强…

echart扩展插件词云echarts-wordcloud

echart扩展插件词云echarts-wordcloud 一、效果图二、主要代码 一、效果图 二、主要代码 // 安装插件 npm i echarts-wordcloud -Simport * as echarts from echarts; import echarts-wordcloud; //下载插件echarts-wordcloud import wordcloudBg from /components/wordcloudB…