QT学记三:多界面跳转
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
