[Qt] Qt信号槽

Posted immjc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Qt] Qt信号槽相关的知识,希望对你有一定的参考价值。

信号槽是Qt的核心机制之一,信号槽简单的来说就是两个对象及两个对象问答行为。

例如:发送者(Sender)发出信号(SIGNAL)、接收者(Receiver)做出反应(SLOT)。利用connect函数将这两个对象及其行为联系起来。

一个简单的例子如下,创建一个button,Clicked button make app quit.

#include <QApplication>
#include <QPushbutton>

int main(int argc, char* argv[])
{
    QApplication a(argc, argv);

    // Create a button.
    QPushButton button("QUIT");

    // Connect signal and slot
    QObject::connect(&button, &QPushButton::clicked, &QApplication::quit);

    // Show button in the screen.
    button.show();

    return a.exec();
}

connect函数的一般形式为:

connect(sender, signal, receiver, slot);

当sender发出signal信号后,receiver的slot函数会自动调用。

其中sender和receiver没有区别,都是QObject指针,主要区别在于signal和slot

signal和slot要求参数类型一致,如果不一致,则允许slot的参数比signal少,但是存在的参数必须对应一致。

 

以上是关于[Qt] Qt信号槽的主要内容,如果未能解决你的问题,请参考以下文章

Qt信号槽机制源码学习

Qt信号槽机制源码学习

Qt 信号槽

Qt的信号槽机制可以保障线程安全吗

qt 关于信号槽传递的参数问题

Qt源码学习之信号槽