Я создал редактор изображений на Qt, но у меня есть проблема с отображением изображения на graphicsView
,
Когда я открываю изображение, я звоню fitInView
так что это хорошо вписывается в graphicsView
и здесь кроется проблема: когда я максимизирую окно, размер графического представления изменяется, так как я установил горизонтальное расположение, но изображение не меняет размер.
Вот несколько изображений, о которых я говорю:
Если я открою файл, когда окно уже развернуто, все будет хорошо.
Как я могу позвонить 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);
}
}
Других решений пока нет …