欢迎光临散文网 会员登陆 & 注册

QT学记三:多界面跳转

2021-11-21 20:50 作者:风菩提树  | 我要投稿

1.新建一个新界面

在Qt中,创建一个界面类的方式和设置

第一步:

右击项目 ---- > new(创建文件),在弹出的对话框中,选择Qt设计师界面类。Qt设计师界面类会包含.ui,.h两个文件,而Qt Designer Form仅创建.ui文件,需在原有的.h文件上进行修改才

能正常进行。后者主要用于如果在创建项目过程中,未勾选生成.ui文件,可以通过后续的操作来增加。

第二步:选择下一步,在弹出的对话框,选择界面的模板

第三步:选择下一步,设置界面类的名字

第四步:点击下一步,完成 即可。adminwindow.cpp 进行程序结构设计,adminwindow.ui是界面设计文件,adminwindow.h是头文件。

2.界面跳转的方式一

该方式是不保留上一个界面,直接释放掉它,若是返回的话,是新建一个界面ui。

3.界面跳转的方式二

该方式是保留上一个界面的内存,当点击返回后,会返回该内存中的界面,也就是跳转到第二个界面时,第一个界面是还在的,只是不显示给你看。

4.界面设计

MainWindow的界面

AddMainWindow的界面

5.方式一的mainwindow程序设计

7.方式二的mainwindow程序设计

结果:

9.界面跳转之携带数据跳转

携带数据跳转,其实利用的是信号和槽来进行数据的传递的。在信号中带上形参,在槽函数中也带上一样的形参。如下:

10.MainWindow中进行数据的携带跳转

11.AddMainWindow界面接收字符串

结果:

https://www.bilibili.com/video/BV1Fq4y1r7zA?spm_id_from=333.999.0.0

代码:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

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_TiaoZhuan_clicked();
signals:
    void sendData(QString data);
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "addmainwindow.h"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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


void MainWindow::on_TiaoZhuan_clicked()
{
   AddMainWindow *aw = new AddMainWindow();
   connect(this,&MainWindow::sendData,aw,&AddMainWindow::getDataFromMainW);

   aw->show();
   emit sendData("hello world!AddMainWindow");
   this->close();
}

addmaindow.h

#ifndef ADDMAINWINDOW_H
#define ADDMAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class AddMainWindow;
}

class AddMainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit AddMainWindow(QWidget *parent = nullptr);
    ~AddMainWindow();
public slots:
    void getDataFromMainW(QString data);
private slots:

    void on_Return_clicked();

private:
    Ui::AddMainWindow *ui;
};

#endif // ADDMAINWINDOW_H

addmainwindow.cpp

#include "addmainwindow.h"
#include "ui_addmainwindow.h"
#include "mainwindow.h"
#include <QMessageBox>
AddMainWindow::AddMainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::AddMainWindow)
{
    ui->setupUi(this);
}

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

void AddMainWindow::getDataFromMainW(QString data)
{
    QMessageBox mes(this);
    mes.setText(data);
    mes.exec();
}

void AddMainWindow::on_Return_clicked()
{
    MainWindow *mw = new MainWindow();
    mw->show();
    this->close();
}

三连,走起来!^_^3333


QT学记三:多界面跳转的评论 (共 条)

分享到微博请遵守国家法律