2012-11-17 44 views
1

我有一個QGraphicsView來呈現我的遊戲。此視圖始終填滿整個屏幕。在右上方,我有另一個QGraphicsView,我正在使用它作爲迷你地圖;它坐落在遊戲視圖之上。我希望這個迷你地圖可以固定在屏幕的右上角,並始終保持其大小。這個代碼幾乎可以工作,除了迷你地圖的左側不變(這是to be expected)。將QGraphicsView錨定到屏幕的一角

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

當您想以某種方式定位小部件時,佈局通常是實現它的最佳方式。

將添加到graphicsView並將其layoutDirection設置爲Qt::RightToLeft。然後將您的miniMapGraphicsView添加到佈局。編輯迷你地圖的屬性,將其水平和垂直sizePolicy設置爲Fixed,並將其minimumSizemaximumSize設置爲您希望的尺寸。

另一種方法是使用QGridLayout並使用水平和垂直間隔符將迷你地圖推送到視圖的任何角落。

注意:佈局具有默認設置的邊距,所以如果您希望您的小部件在邊緣貼合對齊,請將其歸零。

+0

Designer是否支持在'QGraphicsView'中添加'QFormLayout'?當我嘗試添加布局時,它會被添加爲'centralWidget'的子元素,而視圖彼此相鄰,而不是坐在另一個之上。 – Mitch

+0

設計師似乎不支持,這是不幸的。 –

+0

我明白了。謝謝,我會試一試。 – Mitch