gpt4 book ai didi

c++ - 将 QMainWindow 设置在屏幕中央

转载 作者:行者123 更新时间:2023-11-30 03:12:11 24 4
gpt4 key购买 nike

我的 QMainWindow 包含一个 QGraphicsView,它应该有最小宽度和高度。因此,我在 QMainWindow 构造函数中使用了以下代码:

ui.graphicsView->setMinimumHeight(VIEWWIDTH);
ui.graphicsView->setMinimumWidth(VIEWWIDTH);

然后我使用下面的代码将QMainWindow设置在屏幕中央:

QRect available_geom = QDesktopWidget().availableGeometry();
QRect current_geom = frameGeometry();
setGeometry(available_geom.width() / 2 - current_geom.width() / 2,
available_geom.height() / 2 - current_geom.height() / 2,
current_geom.width(),
current_geom.height());

但它并没有设置在屏幕中央。如果我从 QGraphicsView 中省略了 setMinimumHeight()setMinimumWidth(),那么主窗口将设置在屏幕的中央。如何克服这个问题?我正在使用 Qt 4.5.2。

谢谢。

最佳答案

您遇到的问题是 Qt 会尽可能地延迟许多计算。当您设置图形 View 的最小宽度和高度时,它会在图形 View 所在的窗口需要重新布局的地方设置一个标志。然而,它不会这样做,直到它必须......在它实际显示在屏幕上之前的几毫秒。因此,当您在主窗口上调用 rect() 时,您得到的是旧矩形,而不是新矩形。

我最好的建议是在主窗口中扩展大小更改事件,并在该事件中调整定位。您可能还必须在窗口实际显示时进行标记,这样如果用户在窗口显示后调整它的大小,您就不会重新定位窗口。

或者,您可以尝试通过扩展 show event 函数并在此处进行操作来重新定位窗口。它可能会在用户实际看到窗口之前发生,但有时可能会闪烁。

关于c++ - 将 QMainWindow 设置在屏幕中央,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1382537/

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