除了QMetaObject::invokeMethod
是否有任何异步调用方法/槽的类型安全的方法(又名排队其在GUI线程中的执行)?QMetaObject :: invokeMethod替代与编译时检查
QMetaObject::invokeMethod
没有编译时检查函数名称。由于每次调用都会执行查找和字符串匹配,因此通过字符串指定成员函数也会产生开销。
我不知道是否有类似于新的QObject::connect
语法来调用提供编译时检查的方法。
一个解决方案是使用信号插槽架构,但是这强制包装QObject类中的每个调用者代码以便能够发出该信号。
它基本上是https://bugreports.qt.io/browse/QTBUG-36861,我想。 – peppe
@peppe:看来没有其他选择了:https://bugreports.qt.io/browse/QTBUG-55304 – Isaac
看看[this](https://stackoverflow.com/a/21653558/2666212)。因此,你可以这样做,而不是'QMetaObject :: invokeMethod(object,“method”)'':{QObject src; QObject :: connect(&src,&QObject :: destroyed,object,&Object :: method);}'你甚至可以使用带有'QObject'上下文的lamba函数。 。 。 – Mike