2009-06-10 11 views
13

私の機能がどのスレッドで実行されているのか、メインのGUIスレッドであるのか、ある種のワーカースレッドであるのかを知る必要があります。Qtライブラリで検出されたGUIスレッド

QThreadポインタをmain関数に格納し、QThread :: currentThread()と比較するための単純な解決策はありません。なぜなら、ライブラリを作成しており、main関数へのアクセス権がないからです。私はもちろん、InitMyLibary()関数を作成し、GUIスレッドのコンテキストで呼び出すライブラリユーザーが必要ですが、私はこれに対して本当にです。

答えて

23

libにQtがある場合は、アプリケーションオブジェクトのスレッドを尋ねることができます。アプリケーションオブジェクトは、主なGUIスレッドに常駐しています。

void fooWorker() 
{ 
    const bool isGuiThread = 
     QThread::currentThread() == QCoreApplication::instance()->thread(); 

} 
+5

正しい:QCoreApplication :: instance() - >スレッド()。私はまた、インスタンス()== 0をチェックします。 –

関連する問題