QDialog中的Escape仅适用于模态模式?

问题描述 投票:0回答:2

Esc不适用于非模态模式下的对话,事件转到底层窗口。只添加

setWindowModality(Qt::WindowModal);

到创建对话框使Esc键工作并调用reject()插槽。 Esc进/出非模态对话框是正常还是可能?

qt key-bindings qdialog non-modal
2个回答
1
投票

也许使用eventfilter,如果你制作自定义QDialog?如果你打电话

qApp->installEventFilter(yourQDialog);

在创建它时,您可以定义该功能

bool eventFilter(QObject *watched, QEvent *event);

赶上你正在寻找的“esc”。有关事件过滤器的更多信息,请访问:http://doc.qt.io/qt-5/qobject.html#installEventFilter


0
投票

dialog->show();

拨电至

// Shows the dialog as a modal dialog, blocking until the user closes it.
dialog->exec();

现在工作正常。似乎是在对话框中捕获事件的唯一方法,非模态不允许这样或使用另一个答案中提到的键事件过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.