qt - QGraphicsItem validating a position change -


i have custom qgraphicsitem implementation. need able limit item can moved - i,e. restrict area. when checked qt documentation suggested:

qvariant component::itemchange(graphicsitemchange change, const qvariant &value)  {      if (change == itempositionchange && scene()) {          // value new position.          qpointf newpos = value.topointf();          qrectf rect = scene()->scenerect();          if (!rect.contains(newpos)) {              // keep item inside scene rect.              newpos.setx(qmin(rect.right(), qmax(newpos.x(), rect.left())));              newpos.sety(qmin(rect.bottom(), qmax(newpos.y(), rect.top())));              return newpos;          }      }      return qgraphicsitem::itemchange(change, value);  } 

so basically, check position passed itemchange, , if don't it, change , return new value.

seems simple enough, except doesn't work. when checked call stack see itemchange being called qgraphicsitem::setpos, doesn't @ return value. there no purpose me returning changed position, no 1 looking @ it. see code qgraphicsitem.cpp

// notify item position changing.     const qvariant newposvariant(itemchange(itempositionchange, qvariantfromvalue<qpointf>(pos)));     qpointf newpos = newposvariant.topointf();     if (newpos == d_ptr->pos)         return;      // update , repositition.     d_ptr->setposhelper(newpos);      // send post-notification.     itemchange(qgraphicsitem::itempositionhaschanged, newposvariant);     d_ptr->sendsceneposchange(); 

any suggestions? hoping avoid re-implementing whole click , drag behavior myself using mouse-down mouse-move etc..., suppose have if can't find better idea.

i didn't try looks me checking return position. returned restricted position used in constructor of newposvariant converted newpos. it's used set position of item if it's different current one.


Comments

Popular posts from this blog

asp.net - repeatedly call AddImageUrl(url) to assemble pdf document -

java - Android recognize cell phone with keyboard or not? -

iphone - How would you achieve a LED Scrolling effect? -