現在、エレガントな方法では解決できない問題に出くわしました。状況: アプリケーションの外部から呼び出されるコールバック関数があります。repaint()
コールバック関数は、いくつかの gui オブジェクトを更新する必要があります。別のスレッド内から(たとえば) 呼び出すことができないため、メイン イベント ループに関数呼び出しを追加して、タスクがいつか実行されるようにする方法を見つける必要があります。 .
考えられる方法の 1 つは、これを使用することです。
QMetaObject::invokeMethod(object, "functionName", Qt::QueuedConnection, Q_ARG(float, value));
ただし、これはno such Method "Object::functionName"
. (これは明らかに嘘です!)
また、接続タイプを に設定して、イベント ループから呼び出されるスロットに信号を接続することについても読みましたQt::QueuedConnection
。ただし、QOjbect.:connect()
信号を取得する必要があるオブジェクトがわからないため、使用は機能しません。ニースは次のようなものになります
QObject::emit(object, SIGNAL(function(flaot)), arg);