gpt4 book ai didi

c++ - 在创建任何窗口之前如何获得窗口框架的宽度?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:30 24 4
gpt4 key购买 nike

编辑:此应用程序将在 Windows、Mac 和各种 Linux 发行版上运行。我知道 Linux 有这方面的问题,但是 Windows 呢?麦克?

在显示任何窗口之前,是否有任何方法可以获取普通窗口的框架宽度?显示一个窗口后,我知道我可以从 frameSize() 中减去 size(),但这在显示窗口之前不起作用。

我查看了 QApplication::style()->pixelMetric(),我可以使用以下方法获取标题栏的高度

QApplication::style()->pixelMetric(QStyle::PM_TitleBarHeight)

但我没有看到任何选项来获取窗口周围其余边框的宽度。

到目前为止我找到的唯一解决方案是:

  • 将窗口不透明度设置为 0(这样用户就看不到它),
  • 显示窗口
  • 然后从 frameSize() 中减去 size()

有没有更好的办法?

最佳答案

我在 StackOverflow 的另一个问题中发布了一个建议的解决方案,但我也会在这里发布。您可以在显示窗口之前将窗口移动到屏幕之外的某个地方,然后查询它的几何形状,最后将它移动到您想要的位置(如果那是您需要几何形状的地方)。例如,要使主窗口在主屏幕上居中而不闪烁,我会执行以下操作:

MainWindow mainWindow;
QRect primaryScreenGeometry(QApplication::desktop()->screenGeometry());
mainWindow.move(-50000,-50000);
mainWindow.show();
mainWindow.move((primaryScreenGeometry.width() - mainWindow.width()) / 2.0,
(primaryScreenGeometry.height() - mainWindow.height()) / 2.0);

我只在 Windows XP 和 Qt 4.8.x 上测试过这段代码。希望它也适用于其他平台。

关于c++ - 在创建任何窗口之前如何获得窗口框架的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7408082/

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