我通过双击在我的应用程序中打开一个文件(在 Windows 中)。我将通过参数收到的文件名传递给我的开放逻辑。我在那里打电话给 showMaximized(),但它没有被拿起来。打开的窗口未最大化,默认位于屏幕的左上角。
请注意,所有这些逻辑流程都是通过 main(),因此可能会在事件循环开始之前调用 showMaximized()。这会阻止 showMaximized()正常工作吗?如果是,如何解决这个问题?
我也尝试使用 QTimer :: singleShot(0,...,...)(以便让事件循环开始)但这甚至停止了非启动最大化的屏幕。
PS:在 Mac 中,屏幕最大化,因为它通过事件发生( QEvent :: FileOpen )
答案 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调用即可解决此问题。