Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Alex Custov от Апрель 03, 2017, 16:09



Название: Редактируемый прямоугольник выделения
Отправлено: Alex Custov от Апрель 03, 2017, 16:09
Привет. Есть картинка, нужно её кропнуть как хочет пользователь. Самое очевидное - мышью выделить участок картинки, чтобы потом это выделение можно было растягивать, ужимать и двигать. Как в XnView. Какие есть готовые решения для этого, или велосипедить своё? Сразу скажу, что QRubberBand - это не решение, т.к. это просто закрашенный виджет безо всякой функциональности такого выделения.


Название: Re: Редактируемый прямоугольник выделения
Отправлено: gil9red от Апрель 03, 2017, 16:15
Когда-то давно делал для стандратного скриншотера из примеров Qt минимальную поддержку выделения: https://github.com/gil9red/ScreenShot


Название: Re: Редактируемый прямоугольник выделения
Отправлено: mitrich от Апрель 06, 2017, 13:45
Я вот из одной своей штуки решил выдрать и оформить в виде самостоятельного виджета по аналогии с QRubberBand.

https://bitbucket.org/mitrich_k/selectionresizer

Используется следующим образом:
Код
C++ (Qt)
//создаем, настраиваем
resizer = new SelectionResizer(this);
resizer->setMovable(true);
resizer->setActiveBorderPen(QPen(Qt::red));
//коннектим к слоту, в котором будем обновлять геометрию объекта
connect(resizer, SIGNAL(selectionChanged(QRect)), SLOT(onSelectionChanged(QRect)));
 
//....
 
//Когда надо выделить объект, вызываем
resizer->setSelection(x, y, w, h);
resizer->show();
 
//когда закончили
resizer->hide();