前言
总所周知,Alt+F4是系统快捷键,可以直接强制关闭当前活动的应用程序,那么,如果我们的程序退出的时候有弹窗确认,而系统在捕获到Alt+F4快捷键也需要弹窗确认该怎么做呢,今天来解决这个问题。
正文
首先,我们知道Alt+F4快捷键是可以直接关闭应用程序,在Qt应用中,如果要在响应该快捷键的时候在应用程序中弹窗,有两种思路,一种是直接抓取该快捷键,一种是直接响应快捷键后的关闭函数。
如果是QWidget项目,抓取Alt+F4快捷键,有两种方式:响应nativeEvent事件去捕获,另一种是通过windows接口实现钩子操作去抓取该快捷键。
这两种方式不在此介绍,请参照文章:
Qt Alt+F4响应
Qt程序如何屏蔽Alt+F4按键?
以上是QWidget项目可以选择的方式,如果是QML项目呢,最简单的方式就是直接响应快捷键后的关闭函数。
在window窗口中,响应closing信号:
ApplicationWindow {
...
property bool closeKeysWereTriggered: false
...
onClosing: {
if (!closeKeysWereTriggered) {
close.accepted = false;
exitDialog.open();
}
}
Dialog {
id: exitDialog
...
}
}
这样就能解决在响应Alt+F4的时候弹窗提示了。
参考链接:https://forum.qt.io/topic/82768/getting-alt-f4-shortcut-not-working