QDialog 中的 Escape 仅在模态模式下有效?
Escape in QDialog works only in modal mode?
Esc 在非模态模式下对我的对话框不起作用,事件转到底层 window。仅添加
setWindowModality(Qt::WindowModal);
创建对话框使 Esc 键起作用并调用 reject()
插槽。 Esc in/from 非模态对话框是正常的还是可能的?
如果您制作自定义 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();
目前工作正常。似乎是在对话框中捕获事件的唯一方法,non-modal 不允许这样做或使用另一个答案中提到的关键事件过滤器。
Esc 在非模态模式下对我的对话框不起作用,事件转到底层 window。仅添加
setWindowModality(Qt::WindowModal);
创建对话框使 Esc 键起作用并调用 reject()
插槽。 Esc in/from 非模态对话框是正常的还是可能的?
如果您制作自定义 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();
目前工作正常。似乎是在对话框中捕获事件的唯一方法,non-modal 不允许这样做或使用另一个答案中提到的关键事件过滤器。