如何对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消息,大多数主窗口都处理它. 但是,如果打开了模式对话框,则主窗口将被禁用,因此无法获取消息. 修复它的一种方法是不使用模态对话框,而是使用无模式对话框模拟模态.这将允许主窗口接收和响应消息.但对于一个小修复来说,这将是很多工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-phone-7 – 更改WP7应用程序中的页面?
- windows-phone-7 – 如何更新Windows Phone市场上的beta测试
- 在Windows中更新R
- windows – 如何使批处理文件自行删除?
- windows – “相对虚拟地址”,相对于什么?
- active-directory – 计算机名称是否保证在域中是唯一的?
- win7安装Anaconda+TensorFlow(cpu版)+配置PyCharm
- 分区 – Server 2012 Core(无GUI) – 如何管理磁盘?
- 存储区域网络 – Windows 2012 R2 Hyper-V SAN配置
- winapi – 何时(以及如何)布置Win32窗口的子项以响应调整大
- windows-server-2008 – 与Windows 7和2008 Serv
- windows-server-2012 – WSUS每晚下载驱动程序更
- 用于Windows CE的snprintf
- 在Windows上运行vim会留下不可写的交换文件
- 如何检测系统时间是否已更改? (来自.net)
- 使用Windows服务通过WCF处理MSMQ消息
- microsoft-sync-framework – Sync Framework 2.
- windows-server-2008 – 终端服务器2008:安装16
- Win32 Windows应用程序的简单C框架?
- Windows – 使用PowerShell进行Visual Studio命令