前言:

多窗口应用,例如某微信,页面由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多窗口应用相关推荐

  1. QT中关于窗口全屏显示与退出全屏的实现

    近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助. 首先,在QT中对于窗口显示常用的有这么几个方法可以调用: Qt全屏显示 ...

  2. 【Qt】MainWindow窗口状态栏

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 显示菜单动作状态 04. 显示临时信息 05. 显示正常信息 06. 显示永久信息 07. 附录 01. 概述 在程序主窗 ...

  3. Qt图形测绘窗口部件介绍

    Qt 图形测绘窗口部件,主要使用第三方窗口部件: 1.Qwt:http://qwt.sourceforge.net 开源免费 2.GraphPak: http://www.ics.com  收费 3. ...

  4. Qt 之 设置窗口边框的圆角

    Qt技术学习班开始了,更多精彩.好玩的内容等着你,赶紧报名吧! 群号:655815739 Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口.下面分别叙述 ...

  5. qt 全屏窗口有边框_如何在全屏无边框窗口模式下玩任何Windows游戏

    qt 全屏窗口有边框 If you're a regular PC gamer, you know that playing a game in full screen mode can someti ...

  6. Qt 之 自定义窗口标题栏 之 窗口拉伸

    一.简述 之前写了一篇 Qt 之 自定义窗口标题栏 ,用重写了窗口的标题栏,今天为此篇的续篇,对自定义窗口再进行拓展,因为进行了自定义窗口标题栏,去掉了窗口原有的边框,所以鼠标放置窗口边框对窗口进行拉 ...

  7. Qt中设置窗口边框的圆形

    Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口. 下面分别叙述用这两种方式来实现窗口边框圆角的效果. 一.使用setStyleSheet方法 this ...

  8. qt 设置ui窗口为固定大小_Qt 设置窗口居中显示和窗体大小

    设置窗口居中显示 方法一:在窗口(QWidget类及派生类)的构造函数中添加如下代码: #include //....... QDesktopWidget* desktop = QApplicatio ...

  9. qt中关闭窗口资源释放问题

    针对QDialog对象,如果是栈上分配的,就不存在资源泄漏问题,但是当对象是new出来的,并且以局部对像存在,当关闭时,窗口只是隐藏,资源是没有释放的,每次exec后者需要delete来释放,另外一种 ...

  10. qt中设置窗口左上角的图标

    前面一节已经详细的讲解了怎么添加图片到qt的图片资源文件中,这里就不赘述了,不太了解的可以看看博主的这篇随笔:qt中建立图片资源管理文件 this->setWindowIcon(QIcon(&q ...

最新文章

  1. 单片机上电复位电路图大全
  2. BZOJ1720: [Usaco2006 Jan]Corral the Cows 奶牛围栏
  3. 33行代码AC——例题6-5 移动盒子(Boxes in a Line, UVa 12657)——解题报告
  4. 计算机桌面设计总结及体会,计算机基础学习心得
  5. php获取控制器返回,thinkphp获取所有控制器的方法
  6. spring中@Value的使用(读取配置文件信息)
  7. PyTorch 深度学习:37分钟快速入门——FCN 做语义分割
  8. c++ 函数参数问题
  9. c 导出html表格数据格式文件,将html网页导出excel表格数据/如何将html页面中的表格导出到excel表格...
  10. 针式打印机打印显示传真服务器,针式打印机三联纸怎么设置 点击上面的工具栏上的打印服务...
  11. 25岁女生,转行学前端合适吗?
  12. Git 笔记 - 程序员都要掌握的 Git
  13. 一篇出色的argumentative essay怎么写?
  14. 大数据学习——spark运营案例
  15. django QQ认证登录
  16. Faster RCNN训练FLIR红外线数据集
  17. win10默认浏览器中找不到谷歌浏览器最快速的解决办法
  18. Akita与脉冲云的关系
  19. win7系统64位系统怎么计算机配置,教你Ghost win7系统64位虚拟内存怎么设置最好
  20. 都是蹭热点,差距咋就这么大呢?| 拍者手记

热门文章

  1. 震源子波matlab,VSP震源子波应用
  2. winhex 13.5注册版
  3. 空间直角坐标系右手系和左手系的判定方法及绕轴旋转的正方向
  4. Python3之旅之计算机基础知识
  5. redis并发处理慢
  6. acer(宏碁) Aspire S3-951 笔记本无线网卡连接不稳定原因及解决
  7. 高级数据结构一书中的内容来源
  8. 纯JavaScript入门级小游戏:兔子抢金币(附演示地址+源码)
  9. 物联网开源框架 Thingsboard 使用总结
  10. Java给图片添加文字,水印,文件或者http图片地址,可消除文字锯齿