изменяемый размер резинкой с QT - PullRequest
1 голос
/ 20 апреля 2011

Я хочу создать изменяемый инструмент выделения, чтобы выделить часть изображения мышью.Я хочу сделать это с помощью QT, у меня есть рабочий QRubberBand для создания основного выделения.

Следующий шаг - сделать этот выбор изменяемым с помощью мыши.Поэтому, если вы щелкаете и перетаскиваете угол, размер изменяется соответствующим образом, а если вы щелкаете и перетаскиваете его внутри выделенного фрагмента, он должен переместить выделение.

Теперь моя идея состоит в создании подкласса QRubberBand и переопределении метода paintEvent для рисования большой точки на каждом углу и выполнениямышиные события на этих точках.Но мне было интересно, есть ли у кого-нибудь более умный / лучший способ сделать это?

Я хотел бы услышать некоторые идеи по этому поводу.заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 мая 2013

Я только что реализовал общую структуру для произвольной интерактивной оверлейной графики для моего Qt-изображения и векторной программы просмотра.Пожалуйста, смотрите ветку Лассо в https://github.com/dov/Qviv/tree/Lasso/Lasso.Вы можете скомпилировать его с помощью scons, а затем запустить testLasso, чтобы проверить его.В настоящее время в тесте реализован подвижный полупрозрачный суппорт, но вы можете легко изменить его на любую графику, какую пожелаете.Обратите внимание, что подкаталог Lasso в настоящее время полностью независим от остальной части проекта Qviv.

0 голосов
/ 20 апреля 2011

Я делал нечто подобное раньше.Я использовал QGraphicsView вместо QWidget, что значительно облегчило разработку.Я использовал QGraphicsItem в качестве «резиновой ленты».QGraphicsView уже обрабатывает много взаимодействия с пользователем, поэтому мне не пришлось беспокоиться о переопределении событий QWidget :: mouseMove () и т. Д. Кроме того, производительность была намного выше, чем в QWidget из-за оптимизации QGraphicsView.помогает

...