qt: вертикальная и горизонтальная прокрутка QOpenGLWidget

Модератор: Модераторы разделов

Ответить
IMB
Сообщения: 2559
ОС: Debian

qt: вертикальная и горизонтальная прокрутка QOpenGLWidget

Сообщение IMB »

Доброго дня!
Для вывода изображения использую класс наследующий от 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;
}

Масштабирование при прокрутке колеса мышки работает, но есть одна проблема - масштабирование происходит в сторону верхнего левого угла.
И если для уменьшении это не так критично, изображение видно полностью, то при увеличении становиться проблемой.
Как решение я вижу добавление вертикальной и горизонтальной полос прокрутки, желательно динамически в случае необходимости, но что-то не могу сообразить как это реализовать.
Можете подсказать?
Спасибо.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: qt: вертикальная и горизонтальная прокрутка QOpenGLWidget

Сообщение Bizdelnick »

Сразу предупреждаю: Qt не знаю.
Если в данном виджете прокрутки не предусмотрено, значит нужно её добавить в родительский виджет.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: qt: вертикальная и горизонтальная прокрутка QOpenGLWidget

Сообщение NickLion »

Bizdelnick
Почти правильно. Для прокрутки есть отдельный компонент: QScrollArea. Насколько всё это будет хорошо работать с OpenGL не знаю, но по идее особых проблем быть не должно.
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: qt: вертикальная и горизонтальная прокрутка QOpenGLWidget

Сообщение IMB »

Пока сделал так - на widget разместил QOpenGLWidget, горизонтальную и вертикальную прокрутку и объединил всё gridlayout.
Спасибо сказали:
Ответить