QT的信号槽的四种写法和五种链接方式 | 您所在的位置:网站首页 › 写用例的几种写法 › QT的信号槽的四种写法和五种链接方式 |
目录 四种信号槽写法: 五种连接方式: 实例: 常见错误及改正: 错误1: 未连接信号与槽 错误2: 信号和槽参数不匹配 错误3: 未使用Q_OBJECT宏 错误4: 跨线程连接未处理
在Qt中,信号(Signal)和槽(Slot)是一种用于对象之间通信的机制,用于实现一种松耦合的方式。信号被发送时,与之相关联的槽会被调用。以下是四种常见的信号槽写法以及五种连接方式: 四种信号槽写法:直接函数连接: QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot())); 这是Qt早期的连接语法,使用字符串表示信号和槽。在编译时无法进行类型检查。 函数指针连接: QObject::connect(sender, &SenderClass::signal, receiver, &ReceiverClass::slot); 这种连接方式在编译时进行了类型检查,但在一些情况下可能不够灵活,比如连接到一个基类的槽。 Lambda表达式连接(C++11及以后版本): QObject::connect(sender, &SenderClass::signal, [=]() { /* slot implementation */ }); 这种方式可以使用Lambda表达式作为槽的实现,非常方便。 Qt5新语法连接: QObject::connect(sender, &SenderClass::signal, receiver, &ReceiverClass::slot, Qt::ConnectionType); 这种语法在Qt5中引入,允许指定连接类型,例如Qt::AutoConnection、Qt::DirectConnection等。 五种连接方式:AutoConnection:根据信号和槽所在的线程自动选择连接方式。如果在同一线程,则使用DirectConnectionÿ |
CopyRight 2018-2019 实验室设备网 版权所有 |