实现两个窗口切换
点击查看代码
//main.cpp
#include "parentwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
ParentWindow w;
w.show();
return a.exec();
}
//下面是两个类,一个父窗口parentwindow和子窗口subwindows
//父窗口
//头文件
#ifndef PARENTWINDOW_H
#define PARENTWINDOW_H
#include <QMainWindow>
#include <QPushButton>
#include <subwindow.h>
class ParentWindow : public QMainWindow
{
Q_OBJECT
public:
ParentWindow(QWidget *parent = 0);
~ParentWindow();
private:
QPushButton ptn;
subwindow subw;
public slots:
void openSubWind();
void dealSubWind();
};
#endif // PARENTWINDOW_H
//cpp文件
#include "parentwindow.h"
#include <QPushButton>
ParentWindow::ParentWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(400,400);
setWindowTitle("父窗口");
ptn.setText("打开子窗口");
ptn.move(100,100);
// ptn.resize(50,50);
ptn.setParent(this);
connect(&ptn,&QPushButton::clicked,this,&ParentWindow::openSubWind);//连接按钮信号到打开子窗口
connect(&subw,&subwindow::subsig,this,&ParentWindow::dealSubWind);
}
ParentWindow::~ParentWindow()
{
}
void ParentWindow::openSubWind()
{
subw.setWindowTitle("子窗口");
subw.show();
this->hide();
}
void ParentWindow::dealSubWind()
{
subw.hide();
this->show();
}
//子窗口
//头文件
#ifndef SUBWINDOW_H
#define SUBWINDOW_H
#include <QWidget>
#include <QPushButton>
class subwindow : public QWidget
{
Q_OBJECT
public:
explicit subwindow(QWidget *parent = nullptr);
private:
QPushButton ptn;
signals:
void subsig();
public slots:
void DealSubBtnSig();
};
#endif // SUBWINDOW_H
//cpp文件
#include "subwindow.h"
subwindow::subwindow(QWidget *parent) : QWidget(parent)
{
this->resize(400,400);
ptn.setText("打开父窗口");
ptn.move(100,100);
ptn.setParent(this);
connect(&ptn,&QPushButton::clicked,this,&subwindow::DealSubBtnSig);
}
void subwindow::DealSubBtnSig()
{
emit subsig();
}
构造是父窗口有按钮和子窗口对象,并且父窗口有两个槽函数,一个槽函数打开子窗口关闭父窗口,一个槽函数关闭子窗口,打开父窗口。信号和槽之间通过connect连接
子窗口内部有按钮对象,一个信号和一个槽(这个槽接受按钮点击信号并且发送信号)