Qt--两个窗口&自定义信号

主窗口头文件

#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(); //子窗口自定义信号
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值