4

現在、QDialog から継承する別のフォームを使用してユーザーからの入力を要求する formA があります。フォームは、QDialog::exec を使用してプロンプトが表示されます。ここでの問題は、formA の複数のインスタンスが存在するため、formA のいずれかがダイアログとして別のフォームを開くたびに、アプリケーション全体がブロックされることです。現在、私はこのようなものを持っています

if(formUserInputRequired->exec()==1) //Block until the user selects from a form
{
}

QDialog::exec がアプリケーション全体をブロックしないようにする方法はありますか?それが呼び出されたフォームのインスタンスのみをブロックしたいだけですが、アプリケーション全体ではありませんか?

更新: ブロッキング ウィンドウは必要ありません。ただし、元のフォームがそのデータを処理できるように、ユーザーが別のフォームでの入力をいつ完了したかを知る方法が必要です

4

4 に答える 4

8

引数としてsetWindowModalityダイアログでメソッドを呼び出します。Qt::WindowModal

Qt::NonModal          0  The window is not modal and does not block input to other windows.
Qt::WindowModal       1  The window is modal to a single window hierarchy and blocks input to its parent window, all grandparent windows, and all siblings of its parent and grandparent windows.
Qt::ApplicationModal  2  The window is modal to the application and blocks input to all windows.

ソース

于 2013-09-12T15:22:38.047 に答える
1

ダイアログのモダリティQt::WindowModalを(QDialog のデフォルトはQt::ApplicationModal)に設定します。

于 2013-09-12T15:22:37.170 に答える
0

メソッドには独自のイベントループがあるため、show()の代わりにメソッドを使用できます。exec()exec

于 2013-09-12T15:29:45.443 に答える