QStackedWidget类的使用

本文介绍QStackedWidget类的使用。

StackedWidget控件在Qt应用程序开发过程中用的还是比较多的,配合按钮可以实现多个页面之间相互切换,方便了应用程序的开发,本文简要介绍QStackedWidget类实际使用过程中的常用方法,并给出一个简单例程。

1.QStackedWidget类常用方法

1)添加页面

a)追加页面

函数原型如下:

int addWidget(QWidget *widget);

在StackedWidget中追加页面,函数返回该页面的序号,这里的页面可以采用新建一个基于Widget的“FormClass”,并将它添加到StackedWidget中,下同。

b)根据序号插入页面

函数原型如下:

int insertWidget(int index, QWidget *widget);

函数返回该页面的序号。

2)删除页面

函数原型如下:

void removeWidget(QWidget *widget);

此方法仅从StackedWidget上删除(隐藏),并没有将页面删除,可通过添加页面方法重新添加。

3)设置页面

a)通过序号设置

函数原型如下:

void setCurrentIndex(int index);

b)通过页面控件设置

函数原型如下:

void setCurrentWidget(QWidget *widget);

4)获取页面

a)获取页面序号

函数原型如下:

int currentIndex() const;

b)获取页面指针

函数原型如下:

QWidget *currentWidget() const;

2.例程

1)需求

实现点击不同按钮切换到不同页面,各页面包含相应的子控件,实现页面对应功能。

2)实现

实现方法有2种,这里主要介绍方法2。

a)方法1

直接在ui界面中添加相应的页面,并在各自页面中放置相应的控件,在主界面设置信号,槽,并实现页面切换及各页面功能,此法和普通的界面功能实现并无2样(仅增加了一个页面切换),缺点是所有的功能实现都在主窗口内,代码会比较冗长,不够清晰。ui界面设计如下图。

b)方法2

新建若干个基于Widget的“FormClass”(需要几个页面就新建几个),如下图。

分别在几个页面中添加控件,并在各自类中实现页面对应功能,在主界面ui添加StackedWidget控件,主界面ui设计如下图。

在代码中编写代码,插入上面新设计的页面,主界面相关函数如下:

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);page0 = new Page0(this);page1 = new Page1(this);ui->stackedWidget->insertWidget(0, page0);ui->stackedWidget->insertWidget(1, page1);ui->stackedWidget->setCurrentIndex(0);connect(ui->btnPage0, &QPushButton::clicked, this, &MainWindow::onBtnPage0Clicked);connect(ui->btnPage1, &QPushButton::clicked, this, &MainWindow::onBtnPage1Clicked);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::onBtnPage0Clicked(void)
{ui->stackedWidget->setCurrentIndex(0);
}void MainWindow::onBtnPage1Clicked(void)
{ui->stackedWidget->setCurrentIndex(1);
}

方法2的优点是各子页面功能可分别在各自不同的类中实现,编码更清晰。

总结,本文介绍了QStackedWidget类的使用。

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

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

相关文章

Python画笔案例-042 绘制空心十字架

1、绘制空心十字架 通过 python 的turtle 库绘制空心十字架,如下图: 2、实现代码 绘制空心十字架,以下为实现代码: """空心十字架.py """ import turtledef draw_pattern(length):for _ in range(…

Java 学习中使用文件、网络连接等资源时,未正确关闭资源,导致资源泄漏应该怎么办?

在Java编程中,处理文件、网络连接、数据库连接等资源时,如果没有正确关闭资源,就会发生资源泄漏。资源泄漏会导致系统性能下降、内存占用增加,甚至可能导致程序崩溃,特别是在高负载的系统中。 一、什么是资源泄漏&…

仕考网:哈尔滨2024下半年事业单位招考公告

招聘岗位需求计划 本次计划招聘事业单位工作人员共计588名。具体招聘单位、岗位、人数、条件等情况详见《哈尔滨市2024年下半年事业单位公开招聘工作人员岗位计划表》 年龄要求: 满18周岁(2006年9月18日以前出生)、35(含)周岁以下(1988年9月18日及以后出生) 博士…

基于SpringBoot+Vue的考研学习分享互助平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的考研学习…

企业图纸加密软件哪个最好用?10款常用图纸加密软件强力推荐!

在现代企业中,保护图纸和设计文件的安全性至关重要。以下是十款常用且功能强大的图纸加密软件推荐,帮助企业更好地保护其知识产权和敏感数据。 1. 安秉网盾 安秉网盾凭借其强大的加密技术和灵活的权限管理功能,成为企业保护图纸安全的首选。…

JavaScript高级——函数中的this

1、this是什么? ① 任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是 window 。 ② 所有函数内部都有一个变量 this 。 ③ 它的值是调用函数的当前对象。 2、如何确定 this 的值? ① test()&#xff…

强!70.3K star ! 推荐一款功能强大、开源、可视化的性能实时监控系统:Netdata

在当今复杂多变的IT环境中,系统性能的实时监控与分析对于确保业务连续性、系统稳定运行以及快速故障排查至关重要。随着云计算、大数据和微服务架构的普及,对监控系统的要求也日益增高。 今天给大家推荐一款性能监控工具为:Netdata。 它作为一款开源、…

7.测试用例设计方法 + Bug

一、正交实验法 1.使用场景 因果关系比较庞大的情况下,不太适合用因果图判定表,在这种情况下,一般会采用正交实验法。 2.例子: 字符属性设置(4个条件) 字体很多 字符样式很多 …

appium server gui详细按照步骤

1.安装appium server desktop Appium安装提供两种方式:桌面版和命令行版。其中桌面版又分为 Appium GuI 和 Appium Desktop 。作为初学者,用桌面版,对初学者比较友好。 官网下载地址:Releases appium/appium-desktop GitHubTags appium/…

百度经纬度互转高德经纬度_在线经纬度转换工具

简介说明 在线经纬度转换工具主要功能:百度经纬度转高德经纬度,高德经纬度转百度经纬度,坐标拾取,经纬度反查高德坐标拾取器,坐标拾取,经纬度反查百度坐标拾取器,坐标拾取,经纬度反查地图数据批量收集 操作界面 使用入口> 百度经纬度互转高德经纬度_在线经纬度转换工具

如何让Google收录我的网站?

其实仅仅只是收录,只要在GSC提交网址,等个两三天,一般就能收录,但收录是否会掉,这篇内容收录了是否有展现,排名,就是另外一个课题了,如果不收录,除了说明你的网站有问题&…

阿里云rds数据迁移

记录一下rds数据同步操作,官方文档: 跨阿里云账号迁移RDS实例. 背景:不同阿里云账号的rds中指定数据库迁移. 操作说明: 使用阿里云数据传输服务产品,选择数据迁移.注意是从目标阿里云账号的rds中操作,按照文档操作基本上没有问题. 源阿里云账号设置如上. 需要注意的是需要从源…

计算机网络 ---- 电路交换、报文交换、分组交换

目录 零、前言 一、计算机网络发展初期面临的问题 1.1 电路交换的主要特点【电话网络采用电路交换技术】 1.1.1 电路交换的基本知识介绍 1.1.2 电路交换的优缺点 1.3 报文交换技术的特点【电报网络采用报文交换技术】 1.3.1 报文交换的基本知识介绍 1.3.2 报文交换技术…

Python 基本库用法:数学建模

文章目录 前言数据预处理——sklearn.preprocessing数据标准化数据归一化另一种数据预处理数据二值化异常值处理 numpy 相关用法跳过 nan 值的方法——nansum和nanmean展开多维数组(变成类似list列表的形状)重复一个数组——np.tile 分组聚集——pandas.…

VScode 的简单使用

目录 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 也可以“ CTRLD ”;使用“CTRL滚轮”即可; ctrl /-,是用来展开/收起代码的; 比如:js 的多行注释是 shiftalt…

预防式编程——避免空值

文章目录 1. 输入验证2. 使用可选类型(Optional Types)3. 非空断言4. 安全调用运算符5. 提供默认值6. 设计模式7. 文档说明8. 数据结构的选择9. 逻辑判断10. 构造函数和初始化11. 使用工具类12. 枚举类型13. 编码规范14. 测试15. 重构16. 教育与培训 案例…

[Python学习日记-14] Python中基础语法的补充(变量增删改的过程、垃圾回收机制、变量指向关系、身份运算和None)

[Python学习日记-14] Python中基础语法的补充 变量增删改的过程 变量的指向关系 垃圾回收机制 身份运算和None 三元运算 变量增删改的过程 一、增 现在我们假设要创建一个变量名为 name 并且我们要赋它一个值“Jove”,那我们很自然会想到下面的代码 name &q…

使用Python本地搭建http.server文件共享服务并实现公网环境远程访问——“cpolar内网穿透”

前言 本文主要介绍如何在Windows系统电脑上使用python这样的简单程序语言,在自己的电脑上搭建一个共享文件服务器,并通过cpolar创建的公网地址,打造一个可以随时随地远程访问的私人云盘。 数据共享作为和连接作为互联网的基础应用&#xff…

011. Oracle-约束

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

【Web】XGCTF 西瓜杯 超详细题解

目录 CodeInject tpdoor easy_polluted Ezzz_php CodeInject eval里打代码注入 11);system("tac /0*");// tpdoor 可以传参isCache给../../config/route.php写入$config[request_cache_key] 打的是CheckRequestCache中间件解析的漏洞 think\middleware\Ch…