有没有什么好方法可以快速触发Qt中的信号槽?

时间:2016-10-27 03:38:07

标签: c++ qt signals-slots

在Qt中,多个线程使用' emit'发送大量信号,触发很慢。看似有排队机制。有没有什么好方法可以快速触发线路上的信号插槽?

1 个答案:

答案 0 :(得分:1)

您所询问的内容称为Qt::DirectConnection。您需要在connect()中指定它以保证将立即调用插槽。

使用时:

  

发出信号时立即调用插槽。插槽在信令线程中执行。

否则,默认的Qt方式称为Qt::AutoConnection

  

如果接收器位于发出信号的线程中,则使用Qt :: DirectConnection。否则,使用Qt :: QueuedConnection。连接类型在发出信号时确定。

您可以在connect()中指定连接类型:

QMetaObject::Connection QObject::connect(const QObject *sender, const    
   char *signal, const QObject *receiver, const char *method,    
   Qt::ConnectionType type = Qt::AutoConnection)

关于这两者之间的差异以及如何使用的非常好的答案是here