QT-QStackedWidget多窗口应用

这篇具有很好参考价值的文章主要介绍了QT-QStackedWidget多窗口应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

多窗口应用,例如某微信,页面由1,2,3个布局组成。

1-基本流程
   页面1控制页面2,通过选择页面1上的按钮或控件
   页面2控制页面3,通过选择页面2上的按钮或控件

2-其中页面2中的页面很多是不同的,页面3也同理,那其实就是在同一个区域显示不同页面。

3-那么怎么快捷实现这个功能呢?在qt中我们知道,页面其实就是一个个widget,然后qt有自带的控件来实现这个功能,就是QStackedWidget,这个控件可以保存我们的每一个页面,然后可以选择显示某个页面。

qt如何实现管理多个wiget,QT,ui

4-我们实现一个例子

1-先看效果图:这里实现页面选择用的下拉框,看起来比较low,做成微信列表那样原理也是一样的,为了方便简单实现,方便理解,所以使用的下拉框。

qt如何实现管理多个wiget,QT,ui

基本思路:

        1-首先布局主窗口,需要一个选择窗口,里面放一个选择框,一个显示窗口放一个QStackedWidget

        2-新建3个带ui的widget文件,每个ui做好页面

        3-main函数初始化

                1-定义3个页面的对象,放入QList中

                2-把3个页面添加到QStackedWidget控件中

                3-下拉框添加选择事件,通过下拉框索引获取QList,或者直接用索引,修改QStackedWidget当前页面

1-首先布局主窗口  qt如何实现管理多个wiget,QT,uiqt如何实现管理多个wiget,QT,ui

  2-新建三个带ui的widget

        带ui是为了方便后续设计页面内容,如果用代码生成,会比较累。

qt如何实现管理多个wiget,QT,ui

qt如何实现管理多个wiget,QT,ui

3个独立的页面自己设计一下。
qt如何实现管理多个wiget,QT,ui

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_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_comboBox_currentIndexChanged(int index);

private:
    Ui::MainWindow *ui;

    QList<QWidget*> win_lits;
};
#endif // MAINWINDOW_H

源文件文章来源地址https://www.toymoban.com/news/detail-788670.html

#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多窗口应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【QT】多层QTreeWidget与QStackedWidget的关联操作

    通过点击多层QTreeWidget来控制QStackedWidget中的page页面切换 treeWidget设计 treeWidget设计: 关联 选择 on_treeWidget_itemClicked() 函数 重点是使用 setCurrentWidget() 和 判断语句 完整语句:

    2024年01月17日
    浏览(39)
  • qt---应用窗口创建

     

    2024年02月12日
    浏览(50)
  • Qt应用开发(基础篇)——文本编辑窗口 QTextEdit

             QTextEdit 类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,用来显示富文本和纯文本的窗口部件。 框架类 QFrame https://blog.csdn.net/u014491932/article/details/132188655 滚屏区域基类 QAbstractScrollArea https://blog.csdn.net/u014491932/article/details/132245486          QTextEdit 是一个先

    2024年02月11日
    浏览(45)
  • QT中如何在主窗口中添加子窗口

    1.方法         原理其实很简单,和在窗口上动态(代码的形式)添加控件的方法一样,但需要设置一下子窗口的属性: 在子窗口构造函数中添加代码: 作用:隐藏子窗口的标题栏和边框,如果不隐藏的话,子窗口无法嵌套到其它控件上面! 2.举例 在项目中添加一个子窗口(sub1)     子

    2024年02月11日
    浏览(44)
  • Qt 中如何在主窗口中添加子窗口

    方法 原理其实简单,和在窗口上动态 (代码的形式) 添加控件的方法一样,但需要设置一下子窗口的属性: 在子窗口构造函数中添加代码: setWindowFlags(Qt::FramelessWindowHint); 作用:隐藏子窗口的标题栏和边框,如果不隐藏的话,子窗口无法嵌套到其它控件上面! 2. 实例: 指针法 new实例

    2024年02月13日
    浏览(37)
  • 如何使用Qt创建一个新窗口?

    如何使用Qt创建一个新窗口? 在Qt中,我们可以使用QML语言轻松创建图形界面。如果需要创建一个新的窗口,我们可以使用Qt.createComponent来创建一个新组件并将其添加到主窗口中。下面是一个简单的例子。 在这个例子中,我们创建了一个主窗口,并在其中添加了一个按钮。当

    2024年02月11日
    浏览(59)
  • Qt应用开发(基础篇)——对话框窗口 QDialog

            QDialog 类继承于QWidget,是Qt基于对话框窗口(消息窗口 QMessageBox 、颜色选择窗口 QColorDialog 、文件选择窗口 QFileDialog 等)的基类。           QDialog 窗口是顶级的窗口,一般情况下,用来当做用户短期任务(确认、输入、选择)或者和用户交流(提示、错误、警告、进

    2024年02月10日
    浏览(56)
  • Qt应用开发(基础篇)——纯文本编辑窗口 QPlainTextEdit

             QPlainTextEdit 类继承于 QAbstractScrollArea , QAbstractScrollArea 继承于 QFrame ,是Qt用来显示和编辑纯文本的窗口。 滚屏区域基类 https://blog.csdn.net/u014491932/article/details/132245486?spm=1001.2014.3001.5501 框架类QFrame https://blog.csdn.net/u014491932/article/details/132188655?spm=1001.2014.3001.5501   

    2024年02月11日
    浏览(44)
  • Qt应用开发(基础篇)——MDI窗口 QMdiArea QMdiSubWindow

             QMdiArea 类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,是Qt用来显示MDI窗口的部件。        滚屏区域基类 QAbstractScrollArea https://blog.csdn.net/u014491932/article/details/132245486        框架类 QFrame https://blog.csdn.net/u014491932/article/details/132188655           QMdiA

    2024年02月12日
    浏览(43)
  • QT窗口实现无边框

    在窗口的构造函数内添加

    2024年02月06日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包