blob: 6ef118d47eb6632f0b7e5af510fa7b4a66647d84 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include "graphicsview.h"
GraphicsView::GraphicsView(QWidget *parent) : QGraphicsView(parent) {
setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
}
void GraphicsView::setScene(QGraphicsScene *scene) {
QGraphicsView::setScene(scene);
update_scale();
}
void GraphicsView::resizeEvent(QResizeEvent *event) {
QGraphicsView::resizeEvent(event);
update_scale();
}
void GraphicsView::update_scale() {
if (scene() == nullptr)
return; // Skip if we have no scene
// Note: there is somehow three pixels error when viewing so we have to always compensate
const int w = scene()->width() + 3;
const int h = scene()->height() + 3;
qreal scale = 1;
if (height() > h && width() > w) {
if (height() > width()) {
scale = (qreal)width() / w;
} else {
scale = (qreal)height() / h;
}
}
QTransform t;
t.scale(scale, scale);
setTransform(t, false);
}
|