除了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