[QT基础]QT不同ui界面的简单切换(C++) |
您所在的位置:网站首页 › qt如何设置一个界面多个页面 › [QT基础]QT不同ui界面的简单切换(C++) |
一,设备版本
window10,QT 5.11.1,语言c++ 二,设计需求设计两个ui界面,能实现一个ui界面到另一个ui界面的跳转。 三,代码设计为了以防万一,如果是第一次使用qt创建ui界面可以参考以下博客 QT界面创建 1,代码思路两个ui界面,使用一个按钮进行页面的切换,考虑到实际的应用场景,这里是通过两个具体的ui文件,让使用者从一个界面文件跳转到另一个界面文件,而不是在一个界面文件中创建两个界面,这样可以方便实际使用时对各个的界面布局。 ps:如果不知道如何给已有的文件继续添加ui界面文件,可以参考以下博客 QT增加界面文件 2,文件需求拥有两个ui界面文件 mainwindow1.ui mainwindow2.ui 根据已有思路,在mianwindow1中创建一个mainwindow2的对象,通过按钮的槽函数进行mainwindow1的界面跳转到mianwindow2界面的跳转。 界面1.h文件 界面1.cpp文件 经过上面的步骤,我们已经能从界面1转到界面2。当然如果我们想从界面2转到界面1,用这个方法依然可以,但是我们还可以用信号与槽的方式让这个方式更简便。 5,信号与槽跳转在界面2的头文件里面添加一个返回信号。 让界面2的按钮在点击时发送这个信号。 这样当我们在界面2时,只要点击按钮,就会发送一个返回的信号,这个时候,只要我们的界面1能接收到这个信号,那我们便能实现从界面2转到界面1的行为。 界面1接收信号,并执行界面跳转。 当然上面的槽函数也可以单独分离出来,实际情况根据需要进行修改即可。 四,代码源码mainwindow1.h #ifndef MAINWINDOW1_H #define MAINWINDOW1_H #include #include "mainwindow2.h" namespace Ui { class MainWindow1; } class MainWindow1 : public QMainWindow { Q_OBJECT public: explicit MainWindow1(QWidget *parent = 0); ~MainWindow1(); MainWindow2 *window = NULL; private slots: void on_pushButton_clicked(); private: Ui::MainWindow1 *ui; }; #endif // MAINWINDOW1_Hmainwindow1.cpp #include "mainwindow1.h" #include "ui_mainwindow1.h" MainWindow1::MainWindow1(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow1) { ui->setupUi(this); this->window = new MainWindow2; connect(window,&MainWindow2::goback,this,[=](){ window->close(); this->show(); }); } MainWindow1::~MainWindow1() { delete ui; } void MainWindow1::on_pushButton_clicked() { this->hide(); window->show(); }mainwindow2.h #ifndef MAINWINDOW2_H #define MAINWINDOW2_H #include namespace Ui { class MainWindow2; } class MainWindow2 : public QMainWindow { Q_OBJECT public: explicit MainWindow2(QWidget *parent = 0); ~MainWindow2(); signals: void goback(); private slots: void on_pushButton_clicked(); private: Ui::MainWindow2 *ui; }; #endif // MAINWINDOW2_Hmainwindow2.cpp #include "mainwindow2.h" #include "ui_mainwindow2.h" MainWindow2::MainWindow2(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow2) { ui->setupUi(this); } MainWindow2::~MainWindow2() { delete ui; } void MainWindow2::on_pushButton_clicked() { emit goback(); }main.cpp #include "mainwindow1.h" #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow1 w; w.show(); return a.exec(); } |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |