主窗口头文件
#ifndef MAINWIDGET_H #define MAINWIDGET_H #include#include #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" #includeMainWidget::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" #includeMainWidget::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#include class SubWidget : public QWidget { Q_OBJECT public: explicit SubWidget(QWidget *parent = nullptr); void sendSlot(); signals: 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(); //子窗口自定义信号
}



