如何使QGraphicsView大小与图像和主窗口的大小一致?



我正在用Qt开发一个图形编辑器,并使用QGraphicsView来显示图片,并且需要调整它的大小,使其与图像和主窗口的大小一致。

当我打开图像时,下面的方法可以调整图像的大小:

//ui here is Ui::MainWindow* pointer
ui->graphicsView->resize(picture->width, picture->height); 

小图片看起来正常,但是当我打开一张大图片时,它的大小变得比窗口的大小还大,我无法滚动它。

我可以将graphicsView的大小设置为图片和主窗口大小的最大值,但这并不能解决问题,因为当我将主窗口变小时,图片将保持其大小并将比窗口大,所以我认为我需要在调整主窗口大小时调整图像大小。

我知道Qt中有信号和插槽系统,但是我找不到合适的QMainWindow插槽。

如何抓住主窗口大小的变化来调整graphicsView的大小?

QMainWindow中重写resizeEvent()

const QSize &QResizeEvent::size() const

返回小部件的新大小。

void MyMainWindow::resizeEvent(QResizeEvent* event)
{
// ui->graphicsView->resize(event->size());
QMainWindow::resizeEvent(event);
}

最新更新