QT5使用QStackedWidget实现同一窗口下多页面(会话窗口)切换

毕业设计需要用到上位机,选用QT5作为开发工具,本人记性比较差,怕以后又要用到的时候又造一遍轮子,还是记录下来为秒。

上位机需要是完成多个功能,这些功能分不同的会话窗口实现,而这些会话窗口又要在主窗口呈现出来。这里用到了QStackedWidget这个控件。我新建了两个widget窗口,分别放置了一个Label控件,以下就是效果图。

QT5使用QStackedWidget实现同一窗口下多页面(会话窗口)切换_第1张图片


我创建了两个Widget窗口,分别叫FormComm和FormScripts,主窗口的就是默认的MainWindow。

下面开始教程:

1. 首先需要添加你需要的窗口,不管Widget还是Dialog都可以。然后绘制你的UI界面。

QT5使用QStackedWidget实现同一窗口下多页面(会话窗口)切换_第2张图片QT5使用QStackedWidget实现同一窗口下多页面(会话窗口)切换_第3张图片

QT5使用QStackedWidget实现同一窗口下多页面(会话窗口)切换_第4张图片


2. 要想在主窗口打开其他的窗口,就需要在主窗口将其他窗口实例化。我在mainwindow.h的MainWindow类下的private添加Widget窗口的指针,记得添加相应的头文件。

QT5使用QStackedWidget实现同一窗口下多页面(会话窗口)切换_第5张图片


3. 在mainwindow.cpp里实例化子窗口。

QT5使用QStackedWidget实现同一窗口下多页面(会话窗口)切换_第6张图片

4. 最后赋予主窗口里按钮相应的信号槽便可实现。

QT5使用QStackedWidget实现同一窗口下多页面(会话窗口)切换_第7张图片


下面给出主要代码:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include "formcomm.h"
#include "formscripts.h"


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::MainWindow *ui;
    FormComm *FormComm_Page;//创建窗口页面指针
    FormScripts *FormScripts_Page;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"



MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    FormComm_Page = new FormComm(this);//实例化窗口页面
    FormScripts_Page = new FormScripts(this);

    ui->stackedWidget->addWidget(FormComm_Page);
    ui->stackedWidget->addWidget(FormScripts_Page);
    ui->stackedWidget->setCurrentWidget(FormComm_Page);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    ui->stackedWidget->setCurrentWidget(FormComm_Page);
}

void MainWindow::on_pushButton_2_clicked()
{
    ui->stackedWidget->setCurrentWidget(FormScripts_Page);
}

我个人比较喜欢结合QT Designer来制作软件,我不是专业的程序员,底子还是机械的底子,所以在编程上经过这么久的磨合期,能简单实现就简单实现,术业有专攻,还是把自己擅长的做好再来完善其他的比较明智。

你可能感兴趣的:(QT5)