主窗口头文件
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
#include <QPushButton>
#include "subwidget.h"
class MainWidget : public QWidget
{
Q_OBJECT
public:
MainWidget(QWidget *parent = nullptr);
~MainWidget();
void changeWin();
void dealSub();
private:
QPushButton mb;
SubWidget sw;
};
#endif // MAINWIDGET_H
#include "mainwidget.h"
#include<QPushButton>
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
{
this->setWindowTitle(QStringLiteral("我是老板主窗口"));
mb.setParent(this);
mb.setText("ToSub");
mb.move(50,50);
//显示子窗口
//subw.show();
connect(&mb,&QPushButton::released,this,&MainWidget::changeWin);
//处理子窗口的信号
connect(&sw,&SubWidget::mySingal,this,&MainWidget::dealSub);
resize(500,500);
}
void MainWidget::changeWin()
{
sw.show();
this->hide();
}
void MainWidget::dealSub()
{
sw.hide();
this->show();
}
MainWidget::~MainWidget()
{
}
主窗口源文件
#include "mainwidget.h"
#include<QPushButton>
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
{
this->setWindowTitle(QStringLiteral("我是老板主窗口"));
mb.setParent(this);
mb.setText("ToSub");
mb.move(50,50);
//显示子窗口
//subw.show();
connect(&mb,&QPushButton::released,this,&MainWidget::changeWin);
//处理子窗口的信号
connect(&sw,&SubWidget::mySingal,this,&MainWidget::dealSub);
resize(500,500);
}
void MainWidget::changeWin()
{
sw.show();
this->hide();
}
void MainWidget::dealSub()
{
sw.hide();
this->show();
}
MainWidget::~MainWidget()
{
}
子窗口头文件
#ifndef SUBWIDGET_H
#define SUBWIDGET_H
#include <QWidget>
#include<QPushButton>
class SubWidget : public QWidget
{
Q_OBJECT
public:
explicit SubWidget(QWidget *parent = nullptr);
void sendSlot();
signals:
/*
* 信号必须有signals关键字来声明
* 信号没有返回值,但可以有参数
* 信号就是函数的声明,只需声明,无需定义
* 使用:emit mySignal();
*/
void mySingal();
private:
QPushButton sb;
};
#endif // SUBWIDGET_H
子窗口源文件
#include "subwidget.h"
SubWidget::SubWidget(QWidget *parent) : QWidget(parent)
{
this->setWindowTitle("我是公司的好员工");
sb.setParent(this);
sb.setText("ToBOSS");
sb.move(50,50);
connect(&sb,&QPushButton::clicked,this,&SubWidget::sendSlot);
resize(500,500);
}
void SubWidget::sendSlot() //函数的功能就是发送我们自定义的信号
{
emit mySingal(); //子窗口自定义信号
}