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

use*_*062 5 c++ windows qt file-association

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

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

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

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

Vas*_*ene 5

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


adz*_*dzm 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 调用两次来解决此问题。