Qt - 在其他线程上运行函数
Posted
技术标签:
【中文标题】Qt - 在其他线程上运行函数【英文标题】:Qt - run function on other thread 【发布时间】:2019-09-21 00:10:44 【问题描述】:在我的简单 QApplication 中,我有这样的场景:
Class1 从主线程调用。
Class2 从包含 Class1 引用的其他线程调用。
是否可以使用主线程从 Class2 调用 Class1 函数?
我尝试使用 moveToThread 没有成功。感谢您的建议,最好的问候。
丹尼尔
【问题讨论】:
不清楚你在问什么。我认为有一些术语混淆,例如class
是一种类型,因此无法调用。 minimal reproducible example 会有所帮助。
如果我理解你的问题,我想你可能想使用信号和插槽。
是的,这是可能的。您可以从 Class2 调用 Class1 的非静态成员函数
【参考方案1】:
最简单的方法可能是通过 to 对象之间的信号到槽连接进行调用。建立连接时指定Qt::QueuedConnection
或Qt::BlockingQueuedConnection
作为连接类型。这种类型的连接会在接收对象的线程上对信号进行排队。
详情见ConnectionType 和connect
【讨论】:
完美,我使用了 Qt::QueuedConnection 并且该函数总是在主线程上调用。谢谢以上是关于Qt - 在其他线程上运行函数的主要内容,如果未能解决你的问题,请参考以下文章