加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何在创建任何窗口之前获取窗口框架的宽度?

发布时间:2020-12-16 05:01:00 所属栏目:百科 来源:网络整理
导读:编辑:这个应用程序将在 Windows,Mac和各种 Linux发行版上运行.我知道 Linux有这方面的问题,但是Windows呢?苹果电脑? 有没有办法获得正常窗口的框架宽度,在显示任何窗口之前?在显示一个窗口后,我知道我可以从frameSize()中减去size(),但是在显示窗口之后
编辑:这个应用程序将在 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上测试过这段代码.希望它也可以在其他平台上运行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读