1. 发送信号

在发送的头文件中标明需要发送的信号

    Q_OBJECT    //必须使用宏Q_OBJECT
signals:                    //使用signals声明信号函数,访问级别为protected
    void testSignal(int v);     //信号只能声明不能定义

在源文件中,函数内部可以通过 emit 来发送这个信号

emit testSignal(i);     //通过emit关键字发射信号

2. 接收信号的槽

在接收头文件中标明槽函数

    Q_OBJECT
protected slots:
    void mySlot(int v)
    {
        qDebug() << "Value: " << v;
    }

3. 绑定信号和槽

在类似于 mainwindow 这样的上层文件中,需要拿到包含信号的实例和包含槽的实例,然后把信号和对应的槽通过 connect 绑定在一起。

    TestSignal t;
    RxClass r;

    //信号函数与槽函数需要一致,并且不出现参数名
    QObject::connect(&t, SIGNAL(testSignal(int)), &r, SLOT(mySlot(int)));

参考: https://blog.csdn.net/small_prince_/article/details/96106202

标签: Qt, C++

添加新评论