Esc非モーダルモードのダイアログでは機能せず、イベントは下にあるウィンドウに移動します。追加のみ
setWindowModality(Qt::WindowModal);
作成時にダイアログに入力すると、Escキーが機能し、reject()
スロットが呼び出されます。Esc非モーダルダイアログに出入りするのは正常ですか、それとも可能ですか?
Esc非モーダルモードのダイアログでは機能せず、イベントは下にあるウィンドウに移動します。追加のみ
setWindowModality(Qt::WindowModal);
作成時にダイアログに入力すると、Escキーが機能し、reject()
スロットが呼び出されます。Esc非モーダルダイアログに出入りするのは正常ですか、それとも可能ですか?
カスタム QDialog を作成する場合、おそらくイベントフィルターを使用しますか? 電話すれば
qApp->installEventFilter(yourQDialog);
それを作成するときに、関数を定義できます
bool eventFilter(QObject *watched, QEvent *event);
探している「esc」をキャッチします。イベント フィルターの詳細については、http: //doc.qt.io/qt-5/qobject.html#installEventFilterをご覧ください。
かわった
dialog->show();
に呼び出します
// Shows the dialog as a modal dialog, blocking until the user closes it.
dialog->exec();
今のところ問題なく動作します。ダイアログでイベントをキャッチする唯一の方法のようです。非モーダルではこれが許可されないか、別の回答で述べたようにキーイベントフィルターを使用します。