Для вывода изображения использую класс наследующий от QOpenGLWidget.
Сейчас пользователь высказал пожелание иметь масштабирование изображения. сделал это переопределив функцию wheelEvent:
Код: Выделить всё
GLfloat _vertecies[4 * 2];
_vertecies[0] = 0; // x0
_vertecies[1] = 0; // y0
_vertecies[2] = 1; // x1
_vertecies[3] = 0; // y1
_vertecies[4] = 1; // x2
_vertecies[5] = 1; // y2
_vertecies[6] = 0; // x3
_vertecies[7] = 1; //y3
void ROIWidget::wheelEvent(QWheelEvent *e)
{
const QPoint angle = e->angleDelta();
const qreal factor = qPow(1.01, angle.y() / 8);
_vertecies[2] *= factor;
_vertecies[4] *= factor;
_vertecies[5] *= factor;
_vertecies[7] *= factor;
}
Масштабирование при прокрутке колеса мышки работает, но есть одна проблема - масштабирование происходит в сторону верхнего левого угла.
И если для уменьшении это не так критично, изображение видно полностью, то при увеличении становиться проблемой.
Как решение я вижу добавление вертикальной и горизонтальной полос прокрутки, желательно динамически в случае необходимости, но что-то не могу сообразить как это реализовать.
Можете подсказать?
Спасибо.