前言:

多窗口应用,例如某微信,页面由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. C语言的指针函数与函数指针
  2. 【风农翻译】开始画像素画 #8
  3. php模拟post提交请求与调用接口
  4. CentOS设置服务开机自动启动【转】
  5. Verilog HDL 学习笔记3-Latch
  6. JLINK、JTAG、ULINK和STLINK的区别介绍
  7. Redis分布式锁的正确实现方式
  8. Android环绕地球动画,手机也能带你进入360°全景立体影音世界?---杜比全景声体验全接触...
  9. CF16E Fish(状压+期望dp)
  10. GeoServer发布Shapefile矢量数据
  11. php实现支付宝对账单打通
  12. 【文献阅读】RL经典:Benchmarking Deep Reinforcement Learning for Continuous Control
  13. Network网络诊断工具for windows
  14. UVa 815 Flooded
  15. Centos7.5 -Vim编辑器和恢复ext4下误删除的文件-Xmanager工具
  16. Oracle Flashback 知行合一
  17. 王唯佳被南开计算机学院录取,“庞贝病”男生高考662分,已被南开大学录取
  18. 中国石油大学计算机科学与技术在哪个校区,庞善臣 - 中国石油大学 - 计算机科学与技术学院...
  19. 神经网络原理与实例精解,神经网络计算机的组成
  20. 阿里云产业赋能:多端小程序Saas平台的突围之路

热门文章

  1. 福到啦L1-6 福到了(15 分) “
  2. 天梯赛习题:福到了(递归打印)
  3. STS:Surround-view Temporal Stereo for Multi-view 3D Detection——论文笔记
  4. 如何提高面试的成功率--校招
  5. 有12个苹果,其中一个苹果只有质量与其他苹果不一样,现要求用天平秤3次,找出与其他苹果不一样的那个苹果。
  6. 数字电路和模拟电路-6组合逻辑模块及其应用(上)
  7. 通过QQ号获取QQ昵称、头像等信息
  8. 基于MSF框架下的kiwi模块制作黄金票据
  9. python小白从哪来开始-如何看待Python的由来?Python小白如何入门?(附教程)
  10. linux卸载nps,CentOS安装nps