选项卡式小部件QTabWidget

文章目录

  • 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.mzph.cn/bicheng/17163.shtml

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

相关文章

Vue.js - 计算属性与侦听器 【0基础向 Vue 基础学习】

文章目录 计算属性 computedcomputed 的使用方法computed 与 method 的区别计算属性完整写法 watch 侦听器(监视器)简单写法 → 简单类型数据,直接监视完整写法 → 添加额外配置项 计算属性 computed computed 的使用方法 **概念&#xff1…

web题解,基础知识巩固(qsnctf)

1.文章管理系统 1)打开题目,把它页面翻完了,没看懂它有啥用 2)看了看源码,也是一样的,没找到有用的东西 3)想着可能还是在隐藏文件里找,那我就直接用dirsearch扫扫看 4)…

初识C++ · 模拟实现vector

目录 前言: 1 部分简单函数的实现 2 push_back和pop_back 3 reserve和resize 4 Print_vector 5 insert和erase 6 拷贝构造 7 构造 8 赋值 9 memcpy的问题 10 迭代器失效 前言: 继上文模拟实现了string之后,接着就模拟实现vector&…

MyBatis复习笔记

3.Mybatis复习 3.1 xml配置 properties&#xff1a;加载配置文件 settings&#xff1a;设置驼峰映射 <settings><setting name"mapUnderscoreToCamelCase" value"true"/> </settings>typeAliases&#xff1a;类型别名设置 #这样在映射…

如何去除视频上的文字?免费无痕去水印分享!视频制作良器!

对于需要进行二次创作的视频素材&#xff0c;去除原有的文字可以提供一个更加干净的画布&#xff0c;方便创作者在其基础上进行新的创作和编辑。同时&#xff0c;去除文字后的视频也更方便分享到各种平台&#xff0c;避免因为平台对文字的限制而导致视频无法发布或传播。 要去除…

云计算期末复习(1)

云计算基础 作业&#xff08;问答题&#xff09; &#xff08;1&#xff09;总结云计算的特点。 透明的云端计算服务 “无限”多的计算资源&#xff0c;提供强大的计算能力 按需分配&#xff0c;弹性伸缩&#xff0c;取用方便&#xff0c;成本低廉资源共享&#xff0c;降低企…

Windows操作系统基本知识整理

目录 引言 一、Windows操作系统的发展历史 1.1 Windows 1.0到Windows 3.0 1.2 Windows 95到Windows Me 1.3 Windows NT到Windows 2000 1.4 Windows XP到Windows 7 1.5 Windows 8到Windows 10 二、Windows操作系统的核心组件 2.1 内核 2.2 文件系统 2.3 图形用户界面&…

内网横向移动小补充 --->PTK

大家别急&#xff0c;我的基于资源的约束性委派攻击还在写&#xff0c;这个东西一时半会讲不清楚&#xff0c;所以我在这里先来补充一点横向移动以前没说好的东西&#xff01;&#xff01;&#xff01; 在更啦&#xff0c;别催啦~~~~ 还记得我之前在内网渗透里面讲过这个PTK&a…

亚马逊云主管马特·加尔曼面临压力,致力于在人工智能领域赶超竞争对手

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

mysql中连接查询的成本

大家好。上篇文章我们讲了mysql中成本的含义以及单表查询如何计算成本。现在我们接着讲讲mysql中连接查询的成本。 在讲之前&#xff0c;我们先创建两张一样的表single_table和single_table2&#xff0c;并在表中插入10000条数据。在下面的讲解中&#xff0c;我们称single_tab…

java并发工具类都有哪些

Java中的并发工具类包括&#xff1a; CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成某些操作。它通常用于线程间的同步&#xff0c;例如在一个线程完成其工作后通知其他线程继续执行。 CyclicBarrier CyclicBarrier是一个同步辅助类&#xff0c;它允许一…

【面试必看】Java并发

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

ChaosMeta V0.7.0 版本发布 进入CNCF混沌工程全景图

混沌工程 ChaosMeta 的全新版本 V0.7.0 现已正式发布&#xff01;该版本包含了许多新特性和增强功能&#xff0c;在编排界面提供了多集群管理&#xff0c;在代码层面支持多命令下发通道的选择。另外由蚂蚁集团发起的ChaosMeta于北京时间2024年1月10日正式进入CNCF混沌工程全景图…

07_Servlet

Servlet 一 Servlet简介 1.1 动态资源和静态资源 静态资源 无需在程序运行时通过代码运行生成的资源,在程序运行之前就写好的资源. 例如:html css js img ,音频文件和视频文件 动态资源 需要在程序运行时通过代码运行生成的资源,在程序运行之前无法确定的数据,运行时动态生成…

转行一年了

关注、星标公众号&#xff0c;直达精彩内容 ID&#xff1a;技术让梦想更伟大 整理&#xff1a;李肖遥 来公司一年了。 说是转行其实还是在半导体行业&#xff0c;熟悉我的朋友知道 &#xff0c;我在18年开始进入半导体行业&#xff0c;那个时候想着行业很重要&#xff0c;站对了…

气泡水位计的安装方法详解(二)

气泡水位计的安装方法详解&#xff08;二&#xff09; 产品简介 气泡式水位计ZL-BWL-013是一款适用于水文、水利信息化建设领域的新一代水位测量类设备&#xff0c;产品执行GB/T 11828.2-2022标准。ZL-BWL-013气泡水位计&#xff0c;具有安装方便、易于操作&#xff0c;高精度…

算法刷题day54:搜索(一)

目录 引言一、池塘计数二、城堡问题三、山峰和山谷四、迷宫问题五、武士风度的牛六、抓住那头牛七、矩阵距离八、魔板 引言 针对于蓝桥杯&#xff0c;搜索问题还是非常之重要的&#xff0c;在省赛前深知暴搜的重要性&#xff0c;所以提前先把提高课的搜索一章给看了&#xff0…

分布式锁的原理和实现(Go)

文章目录 为什么需要分布式锁&#xff1f;go语言分布式锁的实现Redis自己的实现红锁是什么别人的带红锁的实现 etcdzk的实现 为什么需要分布式锁&#xff1f; 保证分布式系统并发请求或不同服务实例操作共享资源的安全性&#xff0c;通过一种协调机制来保证在同一时刻只有一个…

设计模式17——模板方法模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 模板方法模式&#xff08;Temp…

阿里云Linux 3.2104 LTS 64位安装SVN服务器

直接按步骤 yum install subversion 写y就行 主要是看看安装了那些文件 rpm -ql subversion 主要是为了创建版本库而准备&#xff0c;这个能一遍创建就一遍创建&#xff0c;不行就逐个创建。能创就忽略下面两个mkdir步骤。 mkdir /home/svn/groupRepos 根据新建目录作为版本…