QStackedWidget类的使用

news2024/9/20 6:01:34

本文介绍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控件,并在代码中插入上面新设计的页面,主界面构造函数如下:

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.coloradmin.cn/o/2123973.html

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

相关文章

Matlab -- meshgrid和peaks的用法

最近在看到关于三维路径规划方面中,提到使用了样条插值的方法,其中提到了meshgrid和peaks。也查阅了相关资料,现将查阅的资料整理如下。 1 meshgrid函数 该函数是网格采样点的函数。 主要使用的函数为[X,Y]meshgrid(xgv,ygv); meshgrid函数…

华为OD机试真题 - 矩阵匹配 - 深度优先搜索DFS(Python/JS/C/C++ 2024 D卷 200分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

华为OD机试 - 跳房子I(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷D卷A卷B卷C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加…

高效驱动之选 ——KP85211ASGA 半桥栅极驱动器 内置互锁死区

KP85211A是一款 225V 耐压,具有 1A 拉电流和 1.5A 灌电流能力的半桥栅极驱动器,专用于驱动功率MOSFET或IGBT。采用高压器件工艺技术,具有良好的电流输出及出色的抗瞬态干扰能力。可保证开关节点 VS 瞬态 -7V 情况下系统正常工作。可支持开关节…

SpringBoot自定义启动器(自定义Starter)

一、如何理解 SpringBoot 的 starter 机制 Spring Boot 的 Starter 机制是其简化开发流程的关键特性之一。通过提供 预配置的依赖项 和 自动配置 支持,这一机制极大地简化了项目的依赖管理和配置工作,使得开发者可以更快地搭建应用程序框架,…

【系统分析师】计算机组成与体系架构

计算机硬件组成,运算器,控制器 计算机基本硬件系统五大组成部分:运算器,控制器,存储器,I/O设备 运算器的四个重要寄存器: 算术逻辑单元(实时对数据的算术和逻辑运算,…

C语言 ——— 学习并使用 #if defined #ifdef #ifndef 条件编译指令

目录 学习 #if defined #ifdef #ifndef 条件编译指令 使用 #if defined 和 #ifdef 条件编译指令 使用 #ifndef 条件编译指令 学习 #if defined #ifdef #ifndef 条件编译指令 #if #ifndef 条件编译指令是用来判断某个符号是否被定义过,被定义过的话就为真&#x…

代码随想录冲冲冲 Day41 动态规划Part9

188. 买卖股票的最佳时机 IV 昨天题目是买卖两次,这里是设定好k次 2次的时候一共包含了5中情况 那么k次就包含了2 k 1种情况 初始化只有1 , 3 ,5 也就是买入的状况是有值的,所以初始化时候只需要看这些情况知道2 k 之后只要把…

C++11(2)

目录 6。左值引用和右值引用 下面演示左值和左值引用: 下面演示右值和右值引用: 7。移动构造和移动赋值 VS2022的神级优化 List下的移动构造拷贝和深拷贝(实战) 证明:左值是由编译器决定的 附加:自己实现的List.h 6。左值引…

欺诈文本分类检测(十四):GPTQ量化模型

1. 引言 量化的本质:通过将模型参数从高精度(例如32位)降低到低精度(例如8位),来缩小模型体积。 本文将采用一种训练后量化方法GPTQ,对前文已经训练并合并过的模型文件进行量化,通…

fuxa搭建与使用(web组态)

1. 安装Node.js -> npm安装 参考网址:https://blog.csdn.net/WHF__/article/details/129362462 一、安装运行 C:\WINDOWS\system32>node -v v20.17.0 C:\WINDOWS\system32>npm -v 10.8.2 二、环境配置 在安装路径(D:\Program_Files\nodejs&a…

打开VSCod安装“PHP Intelephense”或“PHP Server”PHP扩展

安装PHP扩展: 打开VSCode,进入扩展视图(或使用快捷键CtrlShiftX)。搜索并安装“PHP Intelephense”或“PHP Server”等PHP相关扩展,这些扩展提供了PHP代码的智能感知、代码导航、调试等功能。 配置PHP路径:…

第2章 方法

本书作者起初以为仅靠研究命令行工具和指标就能提高性能。他认为这样不对。他从头到尾读了一遍手册,看懂了缺页故障、上下文切换和其他各种系统指标的定义,但不知道如何处理它们:如何从发现信号到找到解决方案。 他注意到,每当出…

第 8 章图像内容分类

本章介绍图像分类和图像内容分类算法。首先,我们介绍一些简单而有效的方法和目前一些性能最好的分类器,并运用它们解决两类和多类分类问题,最后展示两个用于手势识别和目标识别的应用实例。 8.1 K邻近分类法(KNN) 在…

2024最新精选文章!分享5款论文ai生成软件

在2024年,AI论文生成软件的出现极大地提升了学术写作的效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿,还能进行内容优化、查重和排版等操作。以下是五款值得推荐的AI论文生成软件,其中特别推荐千笔-AIPassPaper。 ### 千笔-AIPa…

shader 案例学习笔记之step函数

step函数 step(edge,x):当x>edge时返回1,否则返回0 #ifdef GL_ES precision mediump float; #endifuniform vec2 u_resolution;void main(){vec2 st gl_FragCoord.xy/u_resolution.xy;float f step(0.5, st.x);gl_FragColor vec4(f, 0, 0, 1.0); …

JQuery中的$

}); 当jquery.color.js动画插件加载完毕后,单击id为“go”按钮时,class为block的元素就有了颜色动画变化。 $.getJSON() $.getJSON()方法用于加载JSON文件,与$.getScript()方法的用法相同。 我们来看demo2. demo2.html 已有评论&#xff1…

Linux下如何使用CMake实现动态库的封装与调用

一、动态库的封装 1.创建工程 首先创建一个qt工程(这里我采用的是ui工程) 这里选择Widget工程 名字取一个和动态库相关的即可,我这里取的UIDLL 这里选择CMake 这里我选择命名为Dynamic kits采用Qt 5.14.2 GCC 64bit,之后直接下一…

Qt常用控件——QLabel

文章目录 QLabel核心属性文本格式演示显示图片文本对齐自动换行、边距、缩进设置伙伴 QLabel核心属性 QLabel是显示类控件,可以用来显示文本和图片 属性说明textQLabel中的文本textFormat文本格式Qt::PlainText纯文本Qt::RichText富文本(支持html标签&…

html+css网页设计 旅游 雪花旅行社5个页面

htmlcss网页设计 旅游 雪花旅行社5个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#…