gpt4 book ai didi

c++ - 调整窗口大小时如何为 `fitInView`?

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:55 25 4
gpt4 key购买 nike

我在 Qt 上创建了一个图像编辑器,但在 graphicsView 上显示图像时遇到问题。

当我打开图像时,我调用 fitInView 以便它很好地适合 graphicsView 而问题就在这里:当我最大化窗口时,图形 View 大小发生变化因为我设置了水平布局,但图像没有改变大小。

这里有一些关于我在说什么的图片:

Normal size
Maximum size

如果我在窗口已经最大化时打开文件,一切都很好。

如何在窗口最大化时调用 fitInView

最佳答案

非常简单,只需重写 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);
}
}

关于c++ - 调整窗口大小时如何为 `fitInView`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com