resizeable rubberband with QT

老子叫甜甜 提交于 2019-12-13 02:22:07

问题


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.


回答1:


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




回答2:


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.



来源:https://stackoverflow.com/questions/5729193/resizeable-rubberband-with-qt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!