【问题标题】:Anchoring a QGraphicsView to the corner of the screen将 QGraphicsView 锚定到屏幕的角落
【发布时间】: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);
}

我该怎么做?

【问题讨论】:

    标签: c++ qt qgraphicsview


    【解决方案1】:

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

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

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

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

    【讨论】:

    • Designer 是否支持将QFormLayout 添加到QGraphicsView?当我尝试添加布局时,它被添加为 centralWidget 的子项,并且视图彼此相邻,而不是一个位于另一个之上。
    • 设计师好像不支持,很遗憾。
    • 我明白了。谢谢,我试试看。
    猜你喜欢
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多