Qt:showMaximized()无法在Windows中运行

时间:2014-11-26 19:25:22

标签: c++ windows qt file-association

我通过双击在我的应用程序中打开一个文件(在 Windows 中)。我将通过参数收到的文件名传递给我的开放逻辑。我在那里打电话给 showMaximized(),但它没有被拿起来。打开的窗口未最大化,默认位于屏幕的左上角。

请注意,所有这些逻辑流程都是通过 main(),因此可能会在事件循环开始之前调用 showMaximized()。这会阻止 showMaximized()正常工作吗?如果是,如何解决这个问题?

我也尝试使用 QTimer :: singleShot(0,...,...)(以便让事件循环开始)但这甚至停止了非启动最大化的屏幕。

PS:在 Mac 中,屏幕最大化,因为它通过事件发生( QEvent :: FileOpen

2 个答案:

答案 0 :(得分:3)

最简单的解决方法是在使用 showMaximized()之前使用调整大小(800,600)。我在Windows 8.1的Qt 5.7.0中有类似的错误。

答案 1 :(得分:0)

进程第一次调用ShowWindow时,show命令被忽略并使用STARTUPINFO结构中提供的命令(它应与WinMain中的nCmdShow参数对应)。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx

这种令人惊讶的行为倾向于表现在你所描述的问题中。如果您不想直接使用任何Win32 API调用,只需发出两次QT的showMaximized调用即可解决此问题。