0

私はQtとQMLをいじっています。

したがって、ダイアログを表示してユーザー入力を取得するためのブロッキング呼び出しが必要です。呼び出しは、現在の UI スレッドにないことが保証されています。

QML を使用して作成した QDeclarativeView オブジェクトがあります。show method() を使用して表示できます。しかし今、ユーザーが OK/Cancel を押すまでブロックしたいと思います。その時点で、オブジェクトから情報を抽出し、情報を発信者に返します。

質問は次のとおりです。

  • これはQTを使用する合理的な方法ですか
  • もしそうなら、どうすれば現在のスレッドブロックを作成できますか?
4

2 に答える 2

3

QDialog::exec() スロットに接続された Qt::BlockingQueuedConnection を使用します。

http://doc.qt.io/qt-5/qt.html#ConnectionType-enum

于 2011-03-02T00:21:09.290 に答える
1

QDialog から開始する場合は、exec() メソッドを使用して、ダイアログが閉じられるまでブロックできます。宣言型ビューをダイアログに配置できます。

これが Qt の合理的な使用である限り、それはあなたのニーズに依存します。多くの場合、ユーザーは、ダイアログを開いたまま他の操作を続行できる非モーダル ダイアログを好みます。通常、ブロッキング関数は、このような非モーダル ウィンドウを表示する最も便利な方法ではありません。通常、「正しい」ことは、ダイアログが閉じられるたびに実行されるハンドラーにシグナルを接続することです。

于 2011-03-02T00:37:53.923 に答える