Esc不适用于非模态模式下的对话,事件转到底层窗口。只添加
setWindowModality(Qt::WindowModal);
到创建对话框使Esc键工作并调用reject()
插槽。 Esc进/出非模态对话框是正常还是可能?
也许使用eventfilter,如果你制作自定义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();
现在工作正常。似乎是在对话框中捕获事件的唯一方法,非模态不允许这样或使用另一个答案中提到的键事件过滤器。