QGraphicsViewウィンドウの中央に高さと同じ幅を配置しようとしています。
私はQt Designerで普通のものを作成し、最小サイズを設定し、メインウィンドウの中央に配置し、高さと同じ幅を設定するQGraphicsViewいくつかの計算を追加しました。QGraphicsViewのみを使用しsetGeometryます。QGraphicsScene非常に長い長方形を 1 つだけ作成しました。グラフィック シーンを表示に合わせたいので、 を使用しQGraphicsView::fitInViewました。すべて正常に動作しますが、ウィンドウのサイズ変更に問題がありました。
ウィンドウの高さと幅を大きくすると、すべて正常に動作します。のQGraphicsView位置とサイズが新しくなりました。ウィンドウのサイズの一部だけを縮小しても、すべて正常に動作します。しかし(最終的に)ウィンドウのサイズを可能な限り小さくすると、すべてが壊れます。ビューの四角形の幅は適切です (サイズ変更なしと同じです。定規で測定しました:))が、新しい余白が作成され、QGraphicsView配置もサイズも正しくありません(したがって、余白だけでなく、効果がない場合もありsetGeometryます)。
QGraphicsView::fitInViewを使用する前に呼び出すと、同じことが起こることに気付きましたsetGeometry。
それは私を夢中にさせています、助けてください!
ここにいくつかのコードがあります:
void MainWindow::resizeEvent(QResizeEvent *e)
{
int h = e->size().height(),
w = e->size().width(),
s;
if(w > h) s = h-120;
else s = w-120;
ui->board->setGeometry((w-s)/2,(h-s)/2,s,s);
int scaleWidth = ui->board->scene()->width(),
scaleHeight = ui->board->scene()->height();
ui->board->fitInView(QRectF(0, 0, scaleWidth, scaleHeight), Qt::KeepAspectRatio);
}
に何が起こるかのイメージを次にQGraphicsView示します。四角形は赤、ビューは青です。
