本文主要介绍Qt的connect接口
Qt4版本接口
- sender为信号发送者;
- receiver为槽接收者;
- 使用字符串作为信号槽,使用灵活,但对新手不友好,不能再编译期检查,容易在运行中出错。
1
2
3connect(const QObject *sender, const char *signal,
const QObject *receiver, const char *method,
Qt::ConnectionType type = Qt::AutoConnection)
Qt5版本新增接口
- sender为信号发送者;
- receiver为槽接收者;
- 使用强类型作为信号槽参数,能在编译期检查错误,提高容错性。
1
2
3connect(const QObject *sender, const QMetaMethod &signal,
const QObject *receiver, const QMetaMethod &method,
Qt::ConnectionType type = Qt::AutoConnection)
连接属性
ConnectionType | 含义 |
---|---|
Qt::AutoConnection |
(默认)如果接收器位于发出信号的线程中,则使用Qt::DirectConnection 。否则,将使用Qt::QueuedConnection 。连接类型是在发出信号时确定的。 |
Qt::DirectConnection |
(直接连接)当信号发出时,立即调用插槽。槽在信号线程中执行。 |
Qt::QueuedConnection |
(队列连接)当控件返回到接收器线程的事件循环时,将调用槽。槽在接收器线程中执行。 |
Qt::BlockingQueuedConnection |
(阻塞队列连接)与Qt::QueuedConnection 相同,只是信号线程会一直阻塞,直到槽返回。如果接收器位于信号线程中,则不得使用此连接,否则应用程序将死锁。 |
Qt::UniqueConnection |
(单一连接)相同信号连接则只会连接第一次 |
关于更多
- 文章首发于微信公众号
你才小学生
(nicaixiaoxuesheng) - 后续更新于Qtbig哥(qtbig.com)