我已经在Qt上创建了一个图像编辑器,但我在graphicsView上显示图像时遇到了问题。
当我打开图像时,我调用fitInView以便它很好地适应graphicsView,这就是问题所在:当我最大化窗口时,由于我设置了水平布局,图形视图的大小发生了变化,但图像的大小没有变化。
这里有一些关于我正在谈论的图片:


如果我在窗口已经最大化的情况下打开文件,那么一切都是正常的。
当窗口最大化时,我如何调用fitInView?
发布于 2016-02-16 02:50:33
非常简单,只需覆盖resizeEvent即可。
此工作代码依赖于QGraphicsView和QGraphicsScene,缩放也适用;)
const double ZOOM_FACTOR = 1.5;
const double ZOOM_MIN = 1.0;
void ImageViewer::resizeEvent(QResizeEvent* event)
{
if(ZOOM_MIN < m_current_zoom)
{
m_graph_view->setTransform(QTransform::fromScale(m_current_zoom, m_current_zoom));
}
else
{
m_graph_view->fitInView(0, 0, m_graph_scene->width(), m_graph_scene->height(), Qt::KeepAspectRatio);
}
}
void ImageViewer::zoomIn()
{
m_current_zoom = m_current_zoom*ZOOM_FACTOR;
m_graph_scene->setSceneRect(m_graph_scene->itemsBoundingRect());
m_graph_view->setTransform(QTransform::fromScale(m_current_zoom, m_current_zoom));
}
void ImageViewer::zoomOut()
{
m_current_zoom = m_current_zoom/ZOOM_FACTOR;
m_graph_scene->setSceneRect(m_graph_scene->itemsBoundingRect());
if(ZOOM_MIN < m_current_zoom)
{
m_graph_view->setTransform(QTransform::fromScale(m_current_zoom, m_current_zoom));
}
else
{
m_graph_view->fitInView(0, 0, m_graph_scene->width(), m_graph_scene->height(), Qt::KeepAspectRatio);
}
}https://stackoverflow.com/questions/35329386
复制相似问题