gpt4 book ai didi

c++ - 如何强制 QDesktopWidget::screenGeometry 返回更新的几何值

转载 作者:行者123 更新时间:2023-11-28 06:51:33 25 4
gpt4 key购买 nike

我有一个 QT 应用程序,它会在启动时更改屏幕分辨率(通过 unix 中的 xrandr 或通过 OSX 中的 CGConfigureDisplayMode)

一旦屏幕分辨率更改完成并成功,应用程序将继续。

然后它使用 QApplication::desktop()->screenGeometry(int) 检索各种屏幕的大小。

问题是 QDesktopWidget::screenGeometry() 返回分辨率更改发生之前的尺寸。

在这个阶段,Qt 事件循环还没有开始。

我当然会,一旦 Qt 事件循环运行接收到 QDesktopWidget::resized(int) 信号,然后调用 QDesktopWidget::screenGeometry 将返回更新尺寸。但到那时为时已晚。

我可以在收到信号后强制刷新屏幕,并重新计算所有内容,但这会产生丑陋的效果,因为您会看到窗口首先以错误的尺寸显示,然后使用正确的尺寸。

那么问题是:

如何确保 QDesktopWidget::screenGeometry() 返回实际值,而不是应用程序启动时的值。

最佳答案

最终您可以在创建 MainWindow 之前在 main.cpp (int main()) 中实现桌面分辨率切换。如果可能的话,您可以切换并且您的窗口将具有正确的尺寸。您可能还可以在那里运行一个简短的自定义事件循环。

作为最后的手段,将您的应用程序分成 2 个进程。第一个将设置屏幕分辨率,也将被隐藏。一旦分辨率切换成功,您的应用程序就会从正确的尺寸开始调用真实的应用程序。

关于c++ - 如何强制 QDesktopWidget::screenGeometry 返回更新的几何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com