QT-QStackedWidget多窗口应用
前言:
多窗口应用,例如某微信,页面由1,2,3个布局组成。
1-基本流程
页面1控制页面2,通过选择页面1上的按钮或控件
页面2控制页面3,通过选择页面2上的按钮或控件
2-其中页面2中的页面很多是不同的,页面3也同理,那其实就是在同一个区域显示不同页面。
3-那么怎么快捷实现这个功能呢?在qt中我们知道,页面其实就是一个个widget,然后qt有自带的控件来实现这个功能,就是QStackedWidget,这个控件可以保存我们的每一个页面,然后可以选择显示某个页面。
4-我们实现一个例子
1-先看效果图:这里实现页面选择用的下拉框,看起来比较low,做成微信列表那样原理也是一样的,为了方便简单实现,方便理解,所以使用的下拉框。
基本思路:
1-首先布局主窗口,需要一个选择窗口,里面放一个选择框,一个显示窗口放一个QStackedWidget
2-新建3个带ui的widget文件,每个ui做好页面
3-main函数初始化
1-定义3个页面的对象,放入QList中
2-把3个页面添加到QStackedWidget控件中
3-下拉框添加选择事件,通过下拉框索引获取QList,或者直接用索引,修改QStackedWidget当前页面
1-首先布局主窗口
2-新建三个带ui的widget
带ui是为了方便后续设计页面内容,如果用代码生成,会比较累。
3个独立的页面自己设计一下。
3-材料都准备好了,mainwindow添加代码,很简单就几句。
头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include "form1.h"
#include "form2.h"
#include "form3.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_comboBox_currentIndexChanged(int index);private:Ui::MainWindow *ui;QList<QWidget*> win_lits;
};
#endif // MAINWINDOW_H
源文件
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);Form1 *fwin1= new Form1();Form2 *fwin2= new Form2();Form3 *fwin3= new Form3();win_lits.append((QWidget*)fwin1);win_lits.append((QWidget*)fwin2);win_lits.append((QWidget*)fwin3);ui->stackedWidget->addWidget(fwin1);ui->stackedWidget->addWidget(fwin2);ui->stackedWidget->addWidget(fwin3);ui->stackedWidget->setCurrentWidget(fwin2);ui->comboBox->addItem("fwin1");ui->comboBox->addItem("fwin2");ui->comboBox->addItem("fwin3");
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_comboBox_currentIndexChanged(int index)
{ui->stackedWidget->setCurrentWidget(win_lits[index]);//或者直接用index//ui->stackedWidget->setCurrentIndex(index);
}
QT-QStackedWidget多窗口应用相关推荐
- QT中关于窗口全屏显示与退出全屏的实现
近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助. 首先,在QT中对于窗口显示常用的有这么几个方法可以调用: Qt全屏显示 ...
- 【Qt】MainWindow窗口状态栏
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 显示菜单动作状态 04. 显示临时信息 05. 显示正常信息 06. 显示永久信息 07. 附录 01. 概述 在程序主窗 ...
- Qt图形测绘窗口部件介绍
Qt 图形测绘窗口部件,主要使用第三方窗口部件: 1.Qwt:http://qwt.sourceforge.net 开源免费 2.GraphPak: http://www.ics.com 收费 3. ...
- Qt 之 设置窗口边框的圆角
Qt技术学习班开始了,更多精彩.好玩的内容等着你,赶紧报名吧! 群号:655815739 Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口.下面分别叙述 ...
- qt 全屏窗口有边框_如何在全屏无边框窗口模式下玩任何Windows游戏
qt 全屏窗口有边框 If you're a regular PC gamer, you know that playing a game in full screen mode can someti ...
- Qt 之 自定义窗口标题栏 之 窗口拉伸
一.简述 之前写了一篇 Qt 之 自定义窗口标题栏 ,用重写了窗口的标题栏,今天为此篇的续篇,对自定义窗口再进行拓展,因为进行了自定义窗口标题栏,去掉了窗口原有的边框,所以鼠标放置窗口边框对窗口进行拉 ...
- Qt中设置窗口边框的圆形
Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口. 下面分别叙述用这两种方式来实现窗口边框圆角的效果. 一.使用setStyleSheet方法 this ...
- qt 设置ui窗口为固定大小_Qt 设置窗口居中显示和窗体大小
设置窗口居中显示 方法一:在窗口(QWidget类及派生类)的构造函数中添加如下代码: #include //....... QDesktopWidget* desktop = QApplicatio ...
- qt中关闭窗口资源释放问题
针对QDialog对象,如果是栈上分配的,就不存在资源泄漏问题,但是当对象是new出来的,并且以局部对像存在,当关闭时,窗口只是隐藏,资源是没有释放的,每次exec后者需要delete来释放,另外一种 ...
- qt中设置窗口左上角的图标
前面一节已经详细的讲解了怎么添加图片到qt的图片资源文件中,这里就不赘述了,不太了解的可以看看博主的这篇随笔:qt中建立图片资源管理文件 this->setWindowIcon(QIcon(&q ...
最新文章
- C语言的指针函数与函数指针
- 【风农翻译】开始画像素画 #8
- php模拟post提交请求与调用接口
- CentOS设置服务开机自动启动【转】
- Verilog HDL 学习笔记3-Latch
- JLINK、JTAG、ULINK和STLINK的区别介绍
- Redis分布式锁的正确实现方式
- Android环绕地球动画,手机也能带你进入360°全景立体影音世界?---杜比全景声体验全接触...
- CF16E Fish(状压+期望dp)
- GeoServer发布Shapefile矢量数据
- php实现支付宝对账单打通
- 【文献阅读】RL经典:Benchmarking Deep Reinforcement Learning for Continuous Control
- Network网络诊断工具for windows
- UVa 815 Flooded
- Centos7.5 -Vim编辑器和恢复ext4下误删除的文件-Xmanager工具
- Oracle Flashback 知行合一
- 王唯佳被南开计算机学院录取,“庞贝病”男生高考662分,已被南开大学录取
- 中国石油大学计算机科学与技术在哪个校区,庞善臣 - 中国石油大学 - 计算机科学与技术学院...
- 神经网络原理与实例精解,神经网络计算机的组成
- 阿里云产业赋能:多端小程序Saas平台的突围之路
热门文章
- 福到啦L1-6 福到了(15 分) “
- 天梯赛习题:福到了(递归打印)
- STS:Surround-view Temporal Stereo for Multi-view 3D Detection——论文笔记
- 如何提高面试的成功率--校招
- 有12个苹果,其中一个苹果只有质量与其他苹果不一样,现要求用天平秤3次,找出与其他苹果不一样的那个苹果。
- 数字电路和模拟电路-6组合逻辑模块及其应用(上)
- 通过QQ号获取QQ昵称、头像等信息
- 基于MSF框架下的kiwi模块制作黄金票据
- python小白从哪来开始-如何看待Python的由来?Python小白如何入门?(附教程)
- linux卸载nps,CentOS安装nps