qt - Items in a QGraphicsScene near the mouse -
i trying find items under mouse in scene. code using follows:
qpainterpath mousepath; mousepath.addellipse(mouseevent -> pos(),5,5); qlist<qgraphicsitem *> itemscandidate = this->items(mousepath); if (!(itemscandidate.contains(lastselecteditem))) lastselecteditem =itemscandidate.first();
ps: refers scene.
the code should find items intersected small circle around mouse position , keep item pointer unchanged if previous intersected 1 still intersected, or take first in qlist otherwise.
unfortunately, code not work items inside each other. example, if have rect side rect, outer rect intersecting mouse position when 1 near inner rect. how can solve this?
update: seems not problem polygons, rect, ellipses, etc.
update: code in redefined scene::mousemoveevent
you can reimplement mousemoveevent
in qgraphicsview
capture mouse move events in view , track items near mouse like:
void myview::mousemoveevent(qmouseevent *event) { qpointf mousepoint = maptoscene(event->pos()); qreal x = mousepoint.x(); qreal y = mousepoint.y(); foreach(qgraphicsitem * t , items()) { int dist = qsqrt(qpow(t->pos().x()-x,2)+qpow(t->pos().y()-y,2)); if( dist<70 ) { //do whatever } } qgraphicsview::mousemoveevent(event); }
Comments
Post a Comment