除了QMetaObject::invokeMethod
之外,是否有任何类型安全的方法可以异步调用方法/槽(a.k.a在GUI线程中排队执行)?
QMetaObject::invokeMethod
没有函数名的编译时检查。由于每次调用都执行查找和字符串匹配,因此通过字符串指定成员函数也存在开销。
我想知道是否有类似于调用提供编译时检查的方法的新QObject::connect
语法。
一种解决方案是使用信号槽架构,但这会强制将每个调用者代码包装在QObject类中,以便能够发出该信号。
答案 0 :(得分:0)
请参阅此https://doc.qt.io/qt-5/qmetaobject.html#invokeMethod-4
template
这是一个重载函数。
使用连接类型 Qt::AutoConnection 在上下文的事件循环中调用函数。函数可以是函子或指向成员函数的指针。如果可以调用该函数,则返回 true。如果没有这样的成员或参数不匹配,则返回 false。函数调用的返回值放在ret中。
注意:这个函数是线程安全的。
该函数是在 Qt 5.10 中引入的。