你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

qml 捕捉Alt+F4实现弹窗退出

2021-11-15 18:31:55

前言

总所周知,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