別のスレッドにある QObject に対して QML から QObject スロットまたは Q_INVOKABLE メソッドを呼び出す方法と、そうしても安全かどうかを判断しようとしています。
MainThread と ThreadA があるとします。QObjectA は ThreadA に存在します。QML エンジン/GUI/すべてが MainThread に存在します。を使用してQObjectAをQMLエンジンに公開します
declarativeView->setContextProperty("someObj",ObjectA)
今QMLファイルで、私は呼び出します
someObj.someMethod();
someMethod はスロットまたは Q_INVOKABLE です。実際に関数を実行するスレッドを知りたいです。MainThread だとまずいですし、そのようなメソッドをスレッド間で呼び出すのは危険です。ただし、ThreadA によって実行された場合は、すべて問題ありません。
このドキュメントに基づいて: http://doc.qt.nokia.com/4.7-snapshot/qtbinding.html、QMetaObject::invokeMethod() を使用して QObject 関数を呼び出すと仮定しています。そのドキュメント ( http://doc.qt.nokia.com/4.7-snapshot/qmetaobject.html#invokeMethod ) は、Qt シグナルやスロットと同様に、さまざまな接続タイプが利用可能であることを示しています。
スレッド間で QML から C++ メソッドを呼び出すときに、Qt の qml エンジンが状況に応じて適切な型を自動的に選択するかどうかを知りたいです。