将QGraphicsView锚定到屏幕的一角

时间:2012-11-17 16:55:42

标签: c++ qt qgraphicsview

我有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 个答案:

答案 0 :(得分:1)

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

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

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

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