将 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
,并将其minimumSize
和maximumSize
设置为您想要的尺寸。
另一种方法是使用QGridLayout
并使用水平和垂直间隔将迷你地图推到视图的任何角落。
注意:布局默认设置了边距,因此如果您希望小部件在边缘紧贴对齐,请将它们归零。
【讨论】:
Designer 是否支持将QFormLayout
添加到QGraphicsView
?当我尝试添加布局时,它被添加为 centralWidget
的子项,并且视图彼此相邻,而不是一个位于另一个之上。
设计师好像不支持,很遗憾。
我明白了。谢谢,我试试看。以上是关于将 QGraphicsView 锚定到屏幕的角落的主要内容,如果未能解决你的问题,请参考以下文章
如何将 UIView 锚定到屏幕上的特定位置并在滚动时将其保留在那里
锚定到 div 以转到 div 上方的某个点以允许固定标题 [重复]