zoukankan      html  css  js  c++  java
  • 4.自定义信号槽

    具体实现一个自定义newspaper,reader的信号槽
    //!!! Qt5
    #include <QObject>
     
    ////////// newspaper.h
    class Newspaper : public QObject
    {
        Q_OBJECT
    public:
        Newspaper(const QString & name) :
            m_name(name)
        {
        }
     
        void send()
        {
            emit newPaper(m_name);
        }
     
    signals:
        void newPaper(const QString &name);
     
    private:
        QString m_name;
    };
     
    ////////// reader.h
    #include <QObject>
    #include <QDebug>
     
    class Reader : public QObject
    {
        Q_OBJECT
    public:
        Reader() {}
     
        void receiveNewspaper(const QString & name)
        {
            qDebug() << "Receives Newspaper: " << name;
        }
    };
     
    ////////// main.cpp
    #include <QCoreApplication>
     
    #include "newspaper.h"
    #include "reader.h"
     
    int main(int argc, char *argv[])
    {
        QCoreApplication app(argc, argv);
     
        Newspaper newspaper("Newspaper A");
        Reader reader;
        QObject::connect(&newspaper, &Newspaper::newPaper,
                         &reader,    &Reader::receiveNewspaper);
        newspaper.send();
     
        return app.exec();
    }


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

    • 发送者和接收者都需要是QObject的子类(当然,槽函数是全局函数、Lambda 表达式等无需接收者的时候除外);
    • 使用 signals 标记信号函数,信号是一个函数声明,返回 void,不需要实现函数代码;
    • 槽函数是普通的成员函数,作为成员函数,会受到 public、private、protected 的影响;
    • 使用 emit 在恰当的位置发送信号;
    • 使用QObject::connect()函数连接信号和槽。


  • 相关阅读:
    python学习(3)
    Python学习(2)
    powerDesigner的初步使用
    单阶经典检测器: YOLO V1 (一)
    单阶多层检测器: SSD(三)改进算法
    单阶多层检测器: SSD(二)算法综述
    单阶多层检测器: SSD(一)
    两阶经典检测器:Faster RCNN(三)改进算法
    【转载】http协议介绍
    【转载】dts介绍
  • 原文地址:https://www.cnblogs.com/LyndonMario/p/9326246.html
Copyright © 2011-2022 走看看