加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何对Windows中任务栏的右键菜单中的“关闭窗口”做出反应

发布时间:2020-12-14 02:01:42 所属栏目:Windows 来源:网络整理
导读:使用Qt 5.3.0和 Windows 8.1: 不知道我是否遗漏了某些东西,或者这是否是Qt中的疏忽,但当我只是有一个QMainWindow打开一个QDialog(用exec())然后尝试使用右边的’关闭窗口’功能单击Windows任务栏图标的菜单(当对话框仍处于打开状态时),应用程序未按预期关闭
使用Qt 5.3.0和 Windows 8.1:

不知道我是否遗漏了某些东西,或者这是否是Qt中的疏忽,但当我只是有一个QMainWindow打开一个QDialog(用exec())然后尝试使用右边的’关闭窗口’功能单击Windows任务栏图标的菜单(当对话框仍处于打开状态时),应用程序未按预期关闭,但没有任何反应.我也没有在QDialog或QMainWindow中获得closeEvent.

当只有QMainWindow打开时,应用程序成功关闭,我也得到一个closeEvent.

这实际上也是可重复的,例如,使用Qt Designer并打开另一个对话框,然后尝试使用“关闭窗口”功能.

任何想法如何解决这个问题?

解决方法

你所看到的行为并不令人惊讶.事实上,这正是一个(大多数)表现良好的Windows应用程序(如记事本)所发生的事情,所以我不确定我甚至称它为错误.

打开记事本,然后选择帮助 – >关于获取模式对话框.现在从任务栏图标中选择关闭.什么都没发生.

任务栏中的“关闭”将发送到主窗口,就像用户从“系统”菜单中选择“关闭”选项一样.它作为带有SC_CLOSE的WM_SYSCOMMAND到达.如果你没有明确地处理它,那么DefWindowProc将它变成一个WM_CLOSE消息,大多数主窗口都处理它.

但是,如果打开了模式对话框,则主窗口将被禁用,因此无法获取消息.

修复它的一种方法是不使用模态对话框,而是使用无模式对话框模拟模态.这将允许主窗口接收和响应消息.但对于一个小修复来说,这将是很多工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读