开发者

resizeable rubberband with QT

开发者 https://www.devze.com 2023-02-27 01:32 出处:网络
I want to create a resizeable selection tool to select a part of an image with the mouse. I want to accomplish this with QT, i have a working QRubberBand to create a 开发者_运维技巧basic selection.

I want to create a resizeable selection tool to select a part of an image with the mouse. I want to accomplish this with QT, i have a working QRubberBand to create a 开发者_运维技巧basic selection.

Next step is to make that selection resizeable with the mouse. So if you click&drag a corner the size changes accordingly and if you click&drag inside the selection it should move the selection.

now my idea is subclassing QRubberBand and overriding the paintEvent method to paint a big dot on every corner and perform the mouseevents on those dots. But i was wondering if anyone has a smarter/better way of doing this?

i'd like to hear some ideas on this. thanks in advance.


I did something similar before. I used QGraphicsView instead of QWidget which made the development much easier. I used QGraphicsItem as the "rubber band". QGraphicsView already handles a lot of user interaction so I didn't have to bother with reimplementing QWidget::mouseMove() events, etc. Plus the performance was much faster than on QWidget because of QGraphicsView optimizations.

Hope this helps


I just implemented a general framework for arbitrary interactive overlay graphics for my Qt image and vector viewer. Please see the branch Lasso in https://github.com/dov/Qviv/tree/Lasso/Lasso . You can compile it with scons and then run testLasso to test it. Currently the test implements a movable semitransparent caliper, but you can easily change it to any graphics you desire. Note that the Lasso sub directory is currently completely independent of the rest of the Qviv project.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号