欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[Qt]利用Qt实现多界面切换

程序员文章站 2022-05-28 11:55:53
...

最近博主的软件编写用到了多界面,于是,写了个小实例来分享给大家,如何进行Qt软件的多界面编写实现~也可以下载直接体验多界面实现小实例

1、首先,先创建一个新文件,并在里面添加新的Qt设计界面
[Qt]利用Qt实现多界面切换[Qt]利用Qt实现多界面切换
可以得到如图,mainwindow是主界面,widget是我新添加的子界面

2、注意将子界面的.h文件添加主界面的.h中
[Qt]利用Qt实现多界面切换

3、在主界面的.h中,添加子界面的变量及打开子界面和处理子界面信号的函数(在主ui中创建按钮)
[Qt]利用Qt实现多界面切换
[Qt]利用Qt实现多界面切换

4、在子界面.h文件中,添加打开主界面函数和信号(在子ui中创建按钮)
[Qt]利用Qt实现多界面切换
[Qt]利用Qt实现多界面切换

5、在主界面.cpp中连接信号和槽,及对应函数
[Qt]利用Qt实现多界面切换

6、在子界面.cpp中,写相关函数和信号
[Qt]利用Qt实现多界面切换

最终结果:
[Qt]利用Qt实现多界面切换[Qt]利用Qt实现多界面切换
主界面和子界面间,通过按钮进行相互切换~

下面附上源码:
Mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "widget.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_pushButton_clicked();

    void dealslot();

private:
    Ui::MainWindow *ui;
    widget wid;
};
#endif // MAINWINDOW_H

Widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class widget;
}

class widget : public QWidget
{
    Q_OBJECT

public:
    explicit widget(QWidget *parent = nullptr);
    ~widget();

private slots:
    void on_pushButton_clicked();

signals:
    void ChangeUiSlot();

private:
    Ui::widget *ui;
};

#endif // WIDGET_H

Mainwindow.cpp

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

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

    //connect(&wid,SIGNAL(ChangeUiSlot()),this,SLOT(dealslot()));
    connect(&wid,&widget::ChangeUiSlot,this,&MainWindow::dealslot);
}

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


void MainWindow::on_pushButton_clicked()
{
    this->hide();
    wid.show();
}

void MainWindow::dealslot()
{
    this->show();
    wid.hide();
}

Widget.cpp

#include "widget.h"
#include "ui_widget.h"

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

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

void widget::on_pushButton_clicked()
{
    emit ChangeUiSlot();
}

Main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

赶快去试试吧~!喜欢记得点赞支持哦!