多界面切换(QT登录跳转)
应用程序中经常需要在多个界面中跳转切换,最常见的就是登录跳转,下面是简单过程实现。
程序运行时,显示登录界面,点击登录后跳转至界面2执行具体业务。点击返回时回到登录界面。
界面1 登录界面
界面2 具体业务界面
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
signals:
void mysignal(); //自定义信号
private slots:
void on_pushButton_clicked();
protected:
virtual void closeEvent(QCloseEvent *event);
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "dialog.h"
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_clicked();
void my_show_slot();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
setWindowTitle("业务1");
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_pushButton_clicked()
{
emit mysignal();
this->close();
}
void Dialog::closeEvent(QCloseEvent *event)
{
emit mysignal(); //发送信号
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowTitle("登录注册界面");
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
//发送用户名和密码到服务器,然后在槽函数中去跳转
//在这里直接跳转
Dialog *dia = new Dialog(this);
dia->show();//展示第二个界面
connect(dia,SIGNAL(mysignal()),this,SLOT(my_show_slot())); //收到第二个窗口关闭信号显示第一窗口
this->hide();//隐藏第一个界面
}
void Widget::my_show_slot()
{
this->show();
}