QT(3).自定义信号槽

#include "subwdget.h"

subwdget::subwdget(QWidget *parent) : QWidget(parent)
{
    this->setWindowTitle("employ");
    cg_.setParent(this);
    cg_.setText("change to boss");
    connect(&cg_,&QPushButton::released,this,&subwdget::senslot);
}
void subwdget::senslot()
{
    emit mysignals();

}
#ifndef SUBWDGET_H
#define SUBWDGET_H

#include <QWidget>
#include <QPushButton>

class subwdget : public QWidget
{
    Q_OBJECT
public:
    explicit subwdget(QWidget *parent = nullptr);
    void senslot();
signals:
    void mysignals();
private:
    QPushButton cg_;

};

#endif // SUBWDGET_H

自定义信号槽需要注意的事项

发送者和接收者都需要是subwdget的子类(当然,槽函数是全局函数、Lambda 表达式等无需接收者的时候除外);

使用 signals 标记信号函数,信号是一个函数声明,返回 void,不需要实现函数代码;

槽函数是普通的成员函数,作为成员函数,会受到 publicprivateprotected 的影响;

使用 emit 在恰当的位置发送信号;

posted @ 2021-02-21 22:00  zlj-xkbl  阅读(97)  评论(0)    收藏  举报