Qt: showMaximized() 在 Windows 中不起作用
Qt: showMaximized() not working in Windows
我正在通过双击在我的应用程序(在Windows中)打开一个文件。我正在将通过参数接收的文件名传递给我的开放逻辑。在那里我调用 showMaximized(),但它没有被拾取。打开的窗口未最大化,默认位于屏幕的左上角。
请注意,所有这些逻辑流都是通过main()的,因此showMaximized()可能在事件循环开始之前被调用。这会阻止 showMaximized() 正常工作吗?如果是,如何解决这个问题?
我也尝试使用 QTimer::singleShot(0,...,...) (以便让事件循环启动),但这甚至停止了非最大化屏幕的启动。
PS:在Mac中,屏幕正在最大化,因为它通过事件(QEvent::FileOpen)发生
最简单的解决方法是在使用 showMaximized() 之前使用 resize(800,600)。我在Windows 5.7.0上的Qt 8.1中遇到了类似的错误。
我的回答很晚,但我写它以防它帮助某人。
我正在使用 PyQt 11 在 Windows 6 上尝试同样的问题。
最初,我使用了瓦西里耶夫·尤金提出的解决方案,但在某些情况下失败了。
我发现最好的解决方案是使用延迟为1000毫秒的sigleShot:
QtCore.QTimer.singleShot(1000, self.showMaximized)
最终用户几乎察觉不到时间,您可以尝试较低的值,显然除了 0。
此解决方案适用于 PyQt,但也适用于 Qt。
在Windows上,我在应用程序窗口中使用了计时器。我知道这很丑陋,但它有效...
ApplicationWindow {
Timer {
id: fullscreenTimer
interval: 1000; running: false; repeat: false;
onTriggered: root.showFullScreen();
}
Component.onCompleted: {
fullscreenTimer.start();
}
}
进程第一次调用 ShowWindow 时,show 命令将被忽略,并使用 STARTUPINFO 结构中提供的命令(该命令应与 WinMain 中的 nCmdShow 参数相对应)。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx
这种令人惊讶的行为倾向于表现在您所描述的问题中。如果您不想直接使用任何 Win32 API 调用,则只需发出 QT 的 showMaximized 调用两次即可解决此问题。
- Windows.h 输入在函数之外不起作用
- C++Windows API MOUSEEVENTF_XDOWN,MOUSEEVENTF_XUP不起作用
- boost zlib filter 在 Windows 中不起作用
- 在 Windows 上打印不起作用
- Makefile在Linux中工作,但在Windows下不起作用,在子目录中找不到文件
- QClipboard的信号选择已更改在Windows 7中不起作用
- 当我在Windows上运行它时,为什么我的Linux编译二进制不起作用
- 提升协程是否在 Windows x86_64 上不起作用
- 唯一的字符代码在 Linux 中运行时不起作用,但在 Windows (C++) 中很好
- 在 Windows 8 中编译的 DLL 在 Windows 7 中不起作用
- Visual C 2012 Express Compied Application在Windows XP上不起作用
- MinGW .h 编译文件不起作用:此文件的版本与您运行的 Windows 版本不兼容
- outputdebugstring,printf不起作用(Visual Studio 2012,Windows 8)
- getenv( "LINES" ) 在 Windows 上不起作用
- EDSDK消息循环在Windows 8.1下不起作用
- 注入dll在windows XP上不起作用
- MS Windows套接字示例对我不起作用
- 在Windows 7下编译的Dll在Windows XP中不起作用
- 在 Windows 7 上中止系统关闭不起作用
- perl 内联 cpp 在 Windows 32 位上不起作用