《Qt5:同一个界面多窗口或者多页面切换(QStackedWidget)》
QStackedWidget可用于创建类似于QTabWidget提供的用户界面。之前要显示不同的内容,都是通过创建子窗口的方式来实现的,这种是属于弹窗式,而QStackedWidget可以实现同一界面切换不同的窗口,相当于把弹窗式的子窗口都绑定到了一个统一的区域,直接切换就可以显示不同子窗口的内容,但是每次只能显示一个子窗口,这个和弹窗不一样。
完整代码下载
百度网盘链接:https://pan.baidu.com/s/1DLOk1ucpAbY8X6Ncu8HYvQ
提取码:kht9CSDN下载:https://download.csdn.net/download/mars_xiaolei/11060743
本示例创建步骤
1、打开Qt Creator,新建一个Qt Widgets Application项目,添加控件Stacked Widget和PushButton,然后再添加3个子窗口类,分别取名为Rng、Edg、Ig,每个子窗口各添加一个Label控件用于显示战队名字。
2、UI设计完后,开始添加代码
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include "rng.h"
#include "edg.h"
#include "ig.h"namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private slots:void ChooseWidgets();
private:Ui::MainWindow *ui;Rng *rngWidget;Edg *edgWidget;Ig *igWidget;
};#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>int firstIndex=0;MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);//设置窗口名字setWindowTitle(tr("LPL战队切换系统"));Rng *rngWidget=new Rng(this);Edg *edgWidget=new Edg(this);Ig *igWidget=new Ig(this);//添加页面ui->stackedWidget->addWidget(rngWidget);ui->stackedWidget->addWidget(edgWidget);ui->stackedWidget->addWidget(igWidget);//显示页面作为主页ui->stackedWidget->setCurrentWidget(rngWidget);//获取当前页面的序号firstIndex=ui->stackedWidget->currentIndex();qDebug()<<"firstIndex:"<<firstIndex;//连接信号槽connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(ChooseWidgets()));
}MainWindow::~MainWindow()
{delete ui;
}//切换页面
void MainWindow::ChooseWidgets()
{//获取页面的数量int nCount = ui->stackedWidget->count();//获取当前页面的索引int nIndex = ui->stackedWidget->currentIndex();//获取下一个需要显示的页面索引nIndex++;//当需要显示的页面索引大于等于总页面时,切换至首页if (nIndex >= nCount){nIndex = firstIndex;}//显示当前页面ui->stackedWidget->setCurrentIndex(nIndex);
}
注意事项
新添加的Stacked Widget控件是有两个空白页面可以切换的,页面的索引是从0开始的,也就是说两个空白页面占据了0和1,如果新添加了页面,那就是索引号从2开始。还要注意的是页面有两种切换方式,一种是索引号,另外一种是按窗口名称,窗口名称这种在切换的时候不太好用,会报错,最好还是使用索引号。
QStackedWidget::setCurrentWidget: widget 0x75ec1490 not contained in stack
《Qt5:同一个界面多窗口或者多页面切换(QStackedWidget)》相关推荐
- ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- 信息学奥赛真题解析(玩具谜题)
玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...
- 信息学奥赛之初赛 第1轮 讲解(01-08课)
信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...
- 信息学奥赛一本通习题答案(五)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通习题答案(三)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通题目代码(非题库)
为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...
- 信息学奥赛一本通(C++版) 刷题 记录
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
最新文章
- 1Python进阶强化训练之装饰器使用技巧进阶
- word2vec (一) 简介与训练过程概要
- Python 爬虫实现天气查询(可视化界面版)
- sklearn中的分类决策树
- MySQL 高级 游标基本操作
- 规范HTML页的几点注意
- c语言判断出多位各位数
- Tomcat安装及Eclipse配置教程
- TypeError: can't pickle _thread.RLock objects
- flex 学习笔记 皮肤(一)
- 【PHP基础】文件操作
- 中科院分区2020_2020年中科院分区升级版出炉,材料化学物理类一区期刊115本!...
- 适配器模式C++实现
- 李宏毅机器学习笔记day3
- 链表在java中的应用_Java链表
- 前后端分离单页面应用(SPA)项目示例(Vue+ElementUI+Axios+Django+MySql)
- 我爱淘冲刺阶段站立会议每天任务4
- fabric 中 peer 和 couch 容器内部数据存放目录地址
- 管人用人育人留人之道-海潮效应
- 软件测试--【软件测试和bug】