【发布时间】:2015-12-18 08:59:14
【问题描述】:
我有 Qt 小部件应用程序,该应用程序必须先向用户授权 Web 服务请求,然后才能使用该程序。如果用户因任何原因无法登录,我必须退出应用程序。
.NET Framework为此实现了Load事件:当用户第一次看到窗口时(这里的关键字是“用户看到”),可以显示对话框;如果对话框结果不正确,我们在主应用程序窗口上调用 close。
使用 Qt,我们可以覆盖 showEvent。但是,它会在用户真正看到主窗口之前触发。当我在showEvent 中创建对话框时,它没有主窗口出现,当我在showEvent 中关闭主窗口时,它不会关闭(因为它目前没有打开)并且如果用户未能签名,则会出现稍后的事件在。它甚至在QApplication::quit() 呼叫之后出现。
我的问题是:有没有办法接收与 .NET Framework/Windows API 中完全相同的功能,并在用户真正看到窗口而不是“可能会看到某些东西或很快会看到”时触发事件?可以从showEvent 启动定时器来获得类似的效果,但我认为它不专业,因为你永远不知道用户计算机中可能发生什么(可能是它的 CPU 现在 100% 工作),你不能有真正保证计时器会在正确的时刻显示对话框。
【问题讨论】: