将 QGraphicsView 锚定到屏幕的角落

Posted

技术标签:

【中文标题】将 QGraphicsView 锚定到屏幕的角落【英文标题】:Anchoring a QGraphicsView to the corner of the screen 【发布时间】:2012-11-17 16:55:41 【问题描述】:

我有一个 QGraphicsView 来渲染我的游戏。此视图始终充满整个屏幕。在右上角,我有另一个QGraphicsView,我将其用作小地图;它位于游戏视图上方。我希望这个小地图固定在屏幕的右上角,始终保持其大小。这段代码几乎可以工作,只是小地图的左侧永远不会改变(即to be expected)。

void MainWindow::resizeEvent(QResizeEvent *event)

    mainWindow->graphicsView->resize(event->size().width(), event->size().height());
    QRect newRect(mainWindow->miniMapGraphicsView->geometry());
    newRect.setRight(event->size().width() - 20);
    mainWindow->miniMapGraphicsView->setGeometry(newRect);

我该怎么做?

【问题讨论】:

【参考方案1】:

当您想以某种方式定位小部件时,布局通常是最好的方式。

QFormLayout 添加到您的graphicsView 并将其layoutDirection 设置为Qt::RightToLeft。然后将您的 miniMapGraphicsView 添加到布局中。编辑小地图的属性,将其水平和垂直sizePolicy 设置为Fixed,并将其minimumSizemaximumSize 设置为您想要的尺寸。

另一种方法是使用QGridLayout 并使用水平和垂直间隔将迷你地图推到视图的任何角落。

注意:布局默认设置了边距,因此如果您希望小部件在边缘紧贴对齐,请将它们归零。

【讨论】:

Designer 是否支持将QFormLayout 添加到QGraphicsView?当我尝试添加布局时,它被添加为 centralWidget 的子项,并且视图彼此相邻,而不是一个位于另一个之上。 设计师好像不支持,很遗憾。 我明白了。谢谢,我试试看。

以上是关于将 QGraphicsView 锚定到屏幕的角落的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIView 锚定到屏幕上的特定位置并在滚动时将其保留在那里

将自定义 UIView 锚定到相对于屏幕大小的屏幕底部

SwiftUI - 从锚定到按钮框架的按钮点击动画到屏幕上

锚定到 div 以转到 div 上方的某个点以允许固定标题 [重复]

如何将浮动操作按钮锚定到App ToolBar,就像在指南图像中一样?

将 ImageView 锚定到折叠工具栏