我正在尝试制作一个QGraphicsView
与位于窗口中心的高度相同的宽度。
我在 Qt Designer 中创建了一个普通QGraphicsView
的并设置了最小尺寸,添加了一些计算,QGraphicsView
将主窗口的中心居中,并将宽度设置为与高度相同。它只使用setGeometry
. QGraphicsScene
比我只用一个很长的矩形创建了一个。我希望图形场景适合查看,所以我使用了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
,矩形是红色的,视图是蓝色的: