我正在尝试做一个QGraphicsView
宽度与窗口中心的高度相同。
我创建了一个普通的QGraphicsView
在 Qt Designer 中并设置最小尺寸,添加了一些居中的计算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
,矩形为红色,视图为蓝色: