gpt4 book ai didi

qt - 带有编译时检查的 QMetaObject::invokeMethod 替代方法

转载 作者:行者123 更新时间:2023-12-03 22:49:12 24 4
gpt4 key购买 nike

除了QMetaObject::invokeMethod是否有任何类型安全的方式来异步调用方法/插槽(也就是在 GUI 线程中排队执行)?
QMetaObject::invokeMethod没有对函数名称的编译时检查。由于每次调用都会执行查找和字符串匹配,因此通过字符串指定成员函数也存在开销。

不知道有没有类似新的QObject::connect用于调用提供编译时检查的方法的语法。

一种解决方案是使用信号槽架构,但这会强制将每个调用者代码包装在 QObject 类中,以便能够发出该信号。

最佳答案

可以为此目的使用 QTimer::singleShot

QTimer::singleShot(0, object, &Object::method...);
--
QTimer::singleShot(0, object, [object](){
object->method(arg1, arg2, ...);
});

注: QTimer::singleShot所在的线程被调用必须有一个 QEventLoop .

关于qt - 带有编译时检查的 QMetaObject::invokeMethod 替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38943422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com