1

QGraphicsViewは自分のゲームをレンダリングするを持っています。このビューは常に画面全体に表示されます。右上には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);
}

これどうやってするの?

4

1 に答える 1

1

ウィジェットを特定の方法で配置したい場合、通常はレイアウトが最適な方法です。

に a を追加し、に設定しQFormLayoutます。次に、 をレイアウトに追加します。ミニマップのプロパティを編集して、水平と垂直を設定し、希望する寸法に設定します。graphicsViewlayoutDirectionQt::RightToLeftminiMapGraphicsViewsizePolicyFixedminimumSizemaximumSize

別の方法として、 aQGridLayoutを使用し、水平および垂直のスペーサーを使用して、ミニ マップをビューの隅に移動することもできます。

注:レイアウトにはデフォルトで余白が設定されているため、ウィジェットを端にぴったり合わせたい場合は、余白をゼロにしてください。

于 2012-11-17T18:50:02.843 に答える