[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少,但是存在的参数必须对应一致。

 

posted @ 2017-11-14 21:05  immjc  阅读(167)  评论(0编辑  收藏  举报