选项卡式小部件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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

duckdb 插件机制研究

本文研究 duckdb 内置的 extensions 工作机制。 插件架构 在 duckdb 源码内,内置了一组原生插件,位于顶层 extension 目录下: 除此之外,还支持 Out-of-Tree Extension,简单说就是独立的插件,不是集成在源…

2024年5月20日 (周二) 叶子游戏新闻

《边境之塔》登陆Steam 复古风恐怖生存冒险DascuMaru制作并发行,一款低像素3D复古风恐怖生存冒险新游《边境之塔(The Tower on the Borderland)》登陆Steam正式推出,限时九折优惠,本作暂不支持中文。 勇魅出击&#xf…

nuxt2:自定义指令 / v-xxx / directives / 理解 / 使用方法 / DEMO

一、理解自定义指令 在 vue 中提供了一些对于页面和数据更为方便的输出&#xff0c;这些操作就叫做指令&#xff0c;以 v-xxx 表示&#xff0c;比如 html 页面中的属性 <div v-xxx ></div>。自定义指令很大程度提高了开发效率&#xff0c;提高了工程化水平&#x…

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

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

Java项目:基于SSM框架实现的企业人事管理系统单位人事管理系统【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的企业人事管理系统单位人事管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观…

pytorch文本分类(四)模型框架(模型训练与验证)

关卡四 模型训练与验证 本文是在原本闯关训练的基础上总结得来&#xff0c;加入了自己的理解以及疑问解答&#xff08;by GPT4&#xff09; 原任务链接 目录 关卡四 模型训练与验证1. 训练1.1 构建模型结构1.2 模型编译1.3 模型训练1.4模型超参数调试 2. 推理2.1 模型准确性…

大模型时代的具身智能系列专题(三)

清华高阳团队 高阳为清华叉院助理教授&#xff0c;本科毕业于清华大学计算机系&#xff0c;博士毕业于UC Berkeley。博士导师是Vision领域的大牛Trevor Darrell&#xff0c;读博期间和Sergey Levine合作开始强化学习方面的探索&#xff0c;博后跟随Pieter Abbeel做强化学习&am…

aws emr启动standalone的flink集群

关键组件 Client&#xff0c;代码由客户端获取并做转换&#xff0c;之后提交给JobMangerJobManager&#xff0c;对作业进行中央调度管理&#xff0c;获取到要执行的作业后&#xff0c;会进一步处理转换&#xff0c;然后分发任务给众多的TaskManager。TaskManager&#xff0c;数…

ResNet残差网络的学习【概念+翻译】

基于何明凯前辈论文的学习 1.主要内容&#xff08;背景&#xff09; 1、首先提了一个base&#xff1a;神经网络的深度越深&#xff0c;越难以训练。 2、原因&#xff1a;因为随着神经网络层数的增加&#xff0c;通常会遇到梯度消失或梯度爆炸等问题&#xff0c;这会导致训练变…

二十八、openlayers官网示例Data Tiles解析——自定义绘制DataTile源数据

官网demo地址&#xff1a; https://openlayers.org/en/latest/examples/data-tiles.html 这篇示例讲解的是自定义加载DataTile源格式的数据。 先来看一下什么是DataTile&#xff0c;这个源是一个数组&#xff0c;与我们之前XYZ切片源有所不同。DataTile主要适用于需要动态生成…

【CSharp】将ushort数组保存为1通道位深16bit的Tiff图片

【CSharp】将ushort数组保存为1通道位深16bit的Tiff图片 1.背景2.接口 1.背景 System.Drawing.Common 是一个用于图像处理和图形操作的库&#xff0c;它是 System.Drawing 命名空间的一部分。由于 .NET Core 和 .NET 5 的跨平台特性&#xff0c;许多以前内置于 .NET Framework…

10.SpringBoot 统一处理功能

文章目录 1.拦截器1.1在代码中的应用1.1.1定义拦截器1.1.2注册配置拦截器 1.2拦截器的作用1.3拦截器的实现 2.统一数据返回格式2.1 为什么需要统⼀数据返回格式&#xff1f;2.2 统⼀数据返回格式的实现 3.统一异常处理4.SpringBoot专业版创建项目无Java8版本怎么办&#xff1f;…

[转载]同一台电脑同时使用GitHub和GitLab

原文地址&#xff1a;https://developer.aliyun.com/article/893801 简介&#xff1a; 工作中我们有时可能会在同一台电脑上使用多个git账号&#xff0c;例如&#xff1a;公司的gitLab账号&#xff0c;个人的gitHub账号。怎样才能在使用gitlab与github时&#xff0c;切换成对应…

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

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

红外超声波雷达测距

文章目录 一HC-SR04介绍1HC-SR04简介及工作原理 二用HAL库实现HC-SR04测量距离1STM32CubeMX配置2keil53代码的添加 三效果 一HC-SR04介绍 1HC-SR04简介及工作原理 超声波是振动频率高于20kHz的机械波。它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播等…

如何使用 Re-Ranking 改进大模型 RAG 检索

基于大型语言模型&#xff08;LLMs&#xff09;的聊天机器人可以通过检索增强生成&#xff08;RAG&#xff09;提供外部知识来改进。 这种外部知识可以减少错误答案&#xff08;幻觉&#xff09;&#xff0c;并且使模型能够访问其训练数据中未包含的信息。 通过RAG&#xff0…

【Docker学习】详细讲解docker ps

docker ps是我们操作容器次数最多的命令之一&#xff0c;但我们往往使用docker ps或是docker ps -a&#xff0c;对于该命令的其它选项&#xff0c;我们关注比较少。那么这一讲&#xff0c;我给大家详细讲讲该命令的全部方法。 命令&#xff1a; docker container ls 描述&am…

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

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

常见API(JDK7时间、JDK8时间、包装类、综合练习)

一、JDK7时间——Date 1、事件相关知识点 2、Date时间类 Data类是一个JDK写好的Javabean类&#xff0c;用来描述时间&#xff0c;精确到毫秒。 利用空参构造创建的对象&#xff0c;默认表示系统当前时间。 利用有参构造创建的对象&#xff0c;表示指定的时间。 练习——时间计…

Flink 数据源

原理 在 Flink 中&#xff0c;数据源&#xff08;Source&#xff09;是其中一个核心组件&#xff0c;负责从各种来源读取数据供 Flink 程序处理。 Flink 的数据源类型丰富&#xff0c;涵盖了从简单测试到生产环境使用的各种场景。Kafka、Socket、文件和集合是 Flink 中最常见…