0

別のスレッド内からあらゆる種類のGUIウィジェットを実行するのは悪いことです。メッセージだけの場合、これはメインスレッドへのシグナルで克服できます。しかし、スレッドがユーザー入力を必要とする場合、どのように答えをスレッドに戻すことができ、そのスレッドはどのようにその答えを待つことができますか?

私の特定のケースは、libsshのsftpを使用するアプリケーションです。接続および認証中に、ユーザーは1つ以上の質問に答える必要がある場合があります。ただし、パフォーマンス上の理由から、SSH/SFTP関連のものはすべて別のスレッドで実行する必要があります。

4

1 に答える 1

1

非GUIスレッドでGUIクラスを使用することはまったくできません。できることは、シグナルとスロットを使用して、あるスレッドから別のスレッドに情報を交換することです。ワーカースレッドからシグナルを送信し、のようなセマフォを待ちますQWaitCondition。回答を記載したメッセージを送り返します。

あなたの場合Qt::BlockingQueuedConnection、接続タイプとして使用して、ユーザーがデータを入力するまでワーカースレッドを停止することもできます。QInputDialogまた、ユーザーがデータの入力を完了するまで待機します。

于 2012-06-24T15:40:11.133 に答える