当前位置: 首页 > article >正文

Windows图形界面(GUI)-QT-C/C++ - QT Tab Widget

  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

一、概述

1.1 什么是 QTabWidget?

1.2 使用场景

二、常见样式

2.1 选项卡式界面

2.2 动态添加和删除选项卡

2.3 自定义选项卡标题和图标

三、属性设置

3.1 添加页面(Add Page)

3.2 删除页面(Remove Page)

3.3 页面标题(Tab Text)

3.4 页面图标(Tab Icon)

3.5 当前选项卡索引(Current Index)

四、内容处理

4.1 添加页面

4.2 插入页面

4.3 删除页面

4.4 设置页面标题

4.5 获取页面标题

4.6 设置页面图标

4.8 获取当前页面索引

4.9 设置当前页面索引

五、高级功能

5.1 自定义选项卡样式

5.2 选项卡位置

5.3 选项卡关闭按钮

5.4 选项卡拖拽


一、概述

1.1 什么是 QTabWidget

QTabWidget 是 Qt 框架中的一个重要控件,用于在一个窗口中显示多个页面。每个页面可以包含不同的控件和内容,用户可以通过点击选项卡来切换不同的页面。

QTabWidget 提供了一个简洁、有序的界面,特别适合在有限的屏幕空间内显示多个功能或信息组。

1.2 使用场景

  • 多页面显示:当需要在同一个窗口中显示多个页面时,QTabWidget 是一个理想的选择。每个页面可以包含不同的控件和内容,用户可以通过点击选项卡来切换页面。

  • 界面整洁:在有限的屏幕空间内,QTabWidget 可以帮助开发者将多个功能或信息组组织得井井有条,保持界面的整洁和有序。

  • 动态管理QTabWidget 支持动态添加和删除选项卡,使得开发者可以根据需要灵活地管理页面。

二、常见样式

2.1 选项卡式界面

QTabWidget 提供了一个选项卡式的界面,每个选项卡对应一个页面。用户可以通过点击选项卡来切换不同的页面。

2.2 动态添加和删除选项卡

QTabWidget 支持动态添加和删除选项卡,开发者可以根据需要随时添加或删除页面。

2.3 自定义选项卡标题和图标

每个选项卡可以设置标题和图标,使得界面更加直观和美观。

三、属性设置

3.1 添加页面(Add Page)

使用 addTab(QWidget *widget, const QString &label) 方法可以向 QTabWidget 添加一个新页面,并设置页面的标题。

QTabWidget *tabWidget = new QTabWidget(this);
QWidget *page1 = new QWidget();
tabWidget->addTab(page1, "Page 1");

3.2 删除页面(Remove Page)

使用 removeTab(int index) 方法可以从 QTabWidget 中删除指定位置的页面。

tabWidget->removeTab(0); // 删除第一个页面

3.3 页面标题(Tab Text)

使用 setTabText(int index, const QString &label) 方法可以设置指定位置页面的标题。

tabWidget->setTabText(0, "New Page 1 Title");

3.4 页面图标(Tab Icon)

使用 setTabIcon(int index, const QIcon &icon) 方法可以设置指定位置页面的图标。

tabWidget->setTabIcon(0, QIcon(":/images/icon.png"));

3.5 当前选项卡索引(Current Index)

使用 setCurrentIndex(int index) 方法可以设置当前显示的页面索引,使用 currentIndex() const 方法可以获取当前显示页面的索引。

tabWidget->setCurrentIndex(1); // 切换到第二个页面
int currentIndex = tabWidget->currentIndex(); // 获取当前页面索引

四、内容处理

4.1 添加页面

  • addTab(QWidget *widget, const QString &label):向 QTabWidget 添加一个新页面,并设置页面的标题。

4.2 插入页面

  • insertTab(int index, QWidget *widget, const QString &label):在指定位置插入一个新页面,并设置页面的标题。

4.3 删除页面

  • removeTab(int index):从 QTabWidget 中删除指定位置的页面。

4.4 设置页面标题

  • setTabText(int index, const QString &label):设置指定位置页面的标题。

4.5 获取页面标题

  • tabText(int index) const:获取指定位置页面的标题。

4.6 设置页面图标

  • setTabIcon(int index, const QIcon &icon):设置指定位置页面的图标。

4.8 获取当前页面索引

  • currentIndex() const:获取当前显示页面的索引。

4.9 设置当前页面索引

  • setCurrentIndex(int index):设置当前显示页面的索引。

五、高级功能

5.1 自定义选项卡样式

QTabWidget 允许开发者通过样式表(StyleSheet)自定义选项卡的外观。例如,可以设置选项卡的背景颜色、字体、边框等。

tabWidget->setStyleSheet("QTabBar::tab { background-color: #f0f0f0; color: #000; }");

5.2 选项卡位置

QTabWidget 允许开发者设置选项卡的位置,可以放置在窗口的顶部、底部、左侧或右侧。

tabWidget->setTabPosition(QTabWidget::South); // 将选项卡放置在底部

5.3 选项卡关闭按钮

QTabWidget 支持在每个选项卡上添加关闭按钮,用户可以通过点击关闭按钮来关闭页面。

tabWidget->setTabsClosable(true);
connect(tabWidget, &QTabWidget::tabCloseRequested, [=](int index) {tabWidget->removeTab(index);
});

5.4 选项卡拖拽

QTabWidget 支持选项卡的拖拽功能,用户可以通过拖拽选项卡来重新排列页面的顺序。

tabWidget->setMovable(true);

相关文章:

Windows图形界面(GUI)-QT-C/C++ - QT Tab Widget

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 一、概述 1.1 什么是 QTabWidget? 1.2 使用场景 二、常见样式 2.1 选项卡式界面 2.2 动态添加和删除选项卡 2.3 自定义选项卡标题和图标 三、属性设置 3.1 添加页面&…...

C++11 多线程 锁与条件变量:mutex、lock_guard、unique_lock 和 condition_variable

文章目录 mutex核心成员函数使用场景 lock_guard功能和特性构造函数使用场景 unique_lock功能和特性构造函数核心成员函数使用场景 lock_guard对比unique_lockcondition_variable核心成员函数使用场景 mutex std::mutex 是 C 标准库中提供的一种互斥量,用于在多线程…...

【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示

本文通过NE555定时器芯片和简单的电容充放电电路,设计了一种纯硬件实现的呼吸灯方案,并借助Proteus仿真软件验证其功能。方案无需编程,成本低且易于实现,适合电子爱好者学习PWM(脉宽调制)和定时器电路原理。 一、呼吸灯原理与NE555功能分析 1. 呼吸灯核心原理 呼吸灯的…...

Cosmos - 世界模型开发平台

文章目录 一、关于 Cosmos主要特点模型家族 二、使用示例1、推理2、后训练 许可证和联系方式 一、关于 Cosmos NVIDIA Cosmos是开发者第一的世界基础模型平台,旨在帮助物理AI开发者更好、更快地构建他们的物理AI系统。宇宙包含 预训练模型,可通过拥抱脸…...

图像分割中根据mask的ROI,去除mask和image中没有勾画ROI层数以外的图像

在分割任务中,一个患者有很多层图像,但是勾画的ROI仅有那么几层。我想去除ROI以外层数的那些没用的图像。这里以一个36张图像的nii格式数据为例 查看一下mask文件中有多少个非0图像 import nibabel as nib import numpy as np# 加载 .nii 文件 file_pat…...

【Java基础-42.3】Java 基本数据类型与字符串之间的转换:深入理解数据类型的转换方法

在 Java 开发中,基本数据类型与字符串之间的转换是非常常见的操作。无论是从用户输入中读取数据,还是将数据输出到日志或界面,都需要进行数据类型与字符串之间的转换。本文将深入探讨 Java 中基本数据类型与字符串之间的转换方法,…...

全栈开发:使用.NET Core WebAPI构建前后端分离的核心技巧(一)

目录 cors解决跨域 依赖注入使用 分层服务注册 缓存方法使用 内存缓存使用 缓存过期清理 缓存存在问题 分布式的缓存 cors解决跨域 前后端分离已经成为一种越来越流行的架构模式,由于跨域资源共享(cors)是浏览器的一种安全机制,它会阻止前端应用…...

springboot使用rabbitmq

使用springboot创建rabbitMQ的链接。 整个项目结构如下&#xff1a; 1.maven依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>3.4.1</version> </dependency>application.y…...

Linux——ext2文件系统(二)

Linux——ext2文件系统 ext2文件系统宏观认识一、磁盘分区与格式化二、块组&#xff08;Block Group&#xff09;结构三、文件系统特性 文件名与目录名与inode一、inode的作用原理二、文件与目录名与inode的关系 路径一&#xff0c;路径解析二&#xff0c;路径缓存三&#xff0…...

动手学深度学习-3.2 线性回归的从0开始

以下是代码的逐段解析及其实际作用&#xff1a; 1. 环境设置与库导入 %matplotlib inline import random import torch from d2l import torch as d2l作用&#xff1a; %matplotlib inline&#xff1a;在 Jupyter Notebook 中内嵌显示 matplotlib 图形。random&#xff1a;生成…...

“深度强化学习揭秘:掌握DQN与PPO算法的精髓“

深度Q网络&#xff08;Deep Q-Network&#xff0c;简称DQN&#xff09;是一种结合了Q学习和深度神经网络的强化学习算法。它使用神经网络来近似Q值函数&#xff0c;从而实现对复杂状态空间中的动作选择。DQN的核心思想是通过贝尔曼方程&#xff08;Bellman Equation&#xff09…...

如何让DeepSeek恢复联网功能?解决(由于技术原因,联网搜索暂不可用)

DeekSeek提示&#xff1a;&#xff08;由于技术原因&#xff0c;联网搜索暂不可用&#xff09; 众所周知&#xff0c;因为海外黑客的ddos攻击、僵尸网络攻击&#xff0c;deepseek的联网功能一直处于宕机阶段&#xff0c;但是很多问题不联网出来的结果都还是2023年的&#xff0c…...

Unity-编译构建Android的问题记录

文章目录 报错&#xff1a;AAPT2 aapt2-4.1.2-6503028-osx Daemon #0 Failed to shutdown within timeout报错信息解读&#xff1a;原因分析最终处理方法 报错&#xff1a;AAPT2 aapt2-4.1.2-6503028-osx Daemon #0 Failed to shutdown within timeout 报错信息解读&#xff1…...

python的ruff简单使用

Ruff 是一个用 Rust 编写的高性能 Python 静态分析工具和代码格式化工具。它旨在提供快速的代码检查和格式化功能&#xff0c;同时支持丰富的配置选项和与现有工具的兼容性。ruff是用rust实现的python Linter&Formatter。 安装&#xff1a; conda install -c conda-forge…...

Docker 部署 GLPI(IT 资产管理软件系统)

GLPI 简介 GLPI open source tool to manage Helpdesk and IT assets GLPI stands for Gestionnaire Libre de Parc Informatique&#xff08;法语 资讯设备自由软件 的缩写&#xff09; is a Free Asset and IT Management Software package, that provides ITIL Service De…...

【漫话机器学习系列】077.范数惩罚是如何起作用的(How Norm Penalties Work)

范数惩罚的作用与原理 范数惩罚&#xff08;Norm Penalty&#xff09; 是一种常用于机器学习模型中的正则化技术&#xff0c;它的主要目的是控制模型复杂度&#xff0c;防止过拟合。通过对模型的参数进行惩罚&#xff08;即在损失函数中加入惩罚项&#xff09;&#xff0c;使得…...

【C++ STL】vector容器详解:从入门到精通

【C STL】vector容器详解&#xff1a;从入门到精通 摘要&#xff1a;本文深入讲解C STL中vector容器的使用方法&#xff0c;涵盖常用函数、代码示例及注意事项&#xff0c;助你快速掌握动态数组的核心操作&#xff01; 一、vector概述 vector是C标准模板库&#xff08;STL&am…...

LLMs之OpenAI o系列:OpenAI o3-mini的简介、安装和使用方法、案例应用之详细攻略

LLMs之OpenAI o系列&#xff1a;OpenAI o3-mini的简介、安装和使用方法、案例应用之详细攻略 目录 相关文章 LLMs之o3&#xff1a;《Deliberative Alignment: Reasoning Enables Safer Language Models》翻译与解读 LLMs之OpenAI o系列&#xff1a;OpenAI o3-mini的简介、安…...

Notepad++消除生成bak文件

设置(T) ⇒ 首选项... ⇒ 备份 ⇒ 勾选 "禁用" 勾选禁用 就不会再生成bak文件了 notepad怎么修改字符集编码格式为gbk 如图所示...

后台管理系统通用页面抽离=>高阶组件+配置文件+hooks

目录结构 配置文件和通用页面组件 content.config.ts const contentConfig {pageName: "role",header: {title: "角色列表",btnText: "新建角色"},propsList: [{ type: "selection", label: "选择", width: "80px&q…...

Spring Boot项目如何使用MyBatis实现分页查询

写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油&#xff0c;冲鸭&#x…...

[Java]多态

1. 多态的基本概念 1.1 定义&#xff1a; 多态是指同一操作作用于不同的对象时&#xff0c;能够表现出不同的行为。多态通常通过以下两种方式实现&#xff1a; 方法重载&#xff08;Overloading&#xff09;方法重写&#xff08;Overriding&#xff09; 1.2 示例&#xff1…...

用Impala对存储在HDFS中的大规模数据集进行快速、实时的交互式SQL查询的具体步骤和关键代码

AWS EMR&#xff08;Elastic MapReduce&#xff09;中应用Impala的典型案例&#xff0c;主要体现在大型企业和数据密集型组织如何利用Impala对存储在Hadoop分布式文件系统&#xff08;HDFS&#xff09;中的大规模数据集进行快速、实时的交互式SQL查询。以下是一个具体的案例说明…...

Intellij 插件开发-快速开始

目录 一、开发环境搭建以及创建action1. 安装 Plugin DevKit 插件2. 新建idea插件项目3. 创建 Action4. 向新的 Action 表单注册 Action5. Enabling Internal Mode 二、插件实战开发[不推荐]UI Designer 基础JBPanel类&#xff08;JPanel面板&#xff09;需求&#xff1a;插件设…...

GIt使用笔记大全

Git 使用笔记大全 1. 安装 Git 在终端或命令提示符中&#xff0c;输入以下命令检查是否已安装 Git&#xff1a; git --version如果未安装&#xff0c;可以从 Git 官方网站 下载并安装适合你操作系统的版本。 2. 配置 Git 首次使用 Git 时&#xff0c;需要配置用户名和邮箱…...

语言月赛 202412【题目名没活了】题解(AC)

》》》点我查看「视频」详解》》》 [语言月赛 202412] 题目名没活了 题目描述 在 XCPC 竞赛里&#xff0c;会有若干道题目&#xff0c;一支队伍可以对每道题目提交若干次。我们称一支队伍对一道题目的一次提交是有效的&#xff0c;当且仅当&#xff1a; 在本次提交以前&…...

MySQL锁类型(详解)

锁的分类图&#xff0c;如下&#xff1a; 锁操作类型划分 读锁 : 也称为共享锁 、英文用S表示。针对同一份数据&#xff0c;多个事务的读操作可以同时进行而不会互相影响&#xff0c;相互不阻塞的。 写锁 : 也称为排他锁 、英文用X表示。当前写操作没有完成前&#xff0c;它会…...

面经--C语言——static,volatile,malloc,使用异或进行数据交换

文章目录 static静态变量和全局变量的区别volatile主要作用 malloc1. 内存分配器的作用2. 内存分配过程(1) 查找空闲内存块(2) 扩展堆空间(3) 元数据 3. 内存释放过程(1) 标记为可用(2) 合并相邻空闲块(3) 延迟释放 4. 内存管理策略(1) 分配缓存&#xff08;Allocation Caching…...

stm32小白成长为高手的学习步骤和方法

我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解&#xff0c;请立即阅读STM32的文档&#xff0c;以获取最基本的知识点。STM32单片机自学教程 这篇博文也是一篇不错的入门教程&#xff0c;初学者可以看看&#xff0c;讲的真心不错。 英文好的同学&#xf…...

OSCP - Proving Grounds - Roquefort

主要知识点 githook 注入Linux path覆盖 具体步骤 依旧是nmap扫描开始&#xff0c;3000端口不是很熟悉&#xff0c;先看一下 Nmap scan report for 192.168.54.67 Host is up (0.00083s latency). Not shown: 65530 filtered tcp ports (no-response) PORT STATE SERV…...