c++ - How QTableView or QListView is scrolling with hand drag? -


in qgraphicview,

if set : ui->graphicsview->setdragmode(qgraphicsview::scrollhanddrag);

this code make graphicsview can scroll items mouse pressed , drag.

how can make qlistview or qtableview qgraphicsview?

you need subclass these widgets , reimplement qwidget::mousepressevent, qwidget::mousmoveevent , qwidget::mousereleaseevent. have careful because may interfering actions mapped these default implementations (e.g. selecting) need tweaked bit. example (assumed subclass of qlistview):

void mylistview::mousepressevent(qmouseevent *event) {     if(event->button() == qt::rightbutton) //lets map scrolling right button         m_scrollstart = event.pos(); //qpoint member, indicates start of scroll     else         qlistview::mousepressevent(event); } 

and then

void mylistview::mousemoveevent(qmouseevent *event) {     if(!m_scrollstart.isnull()) //if scroll started     {         bool direction = (m_scrollstart.y() < event.pos().y()) //determine direction, true (start below current), false down (start above current)         int singlestep = (direction ? 10 : -10); //fill in desired value         verticalscrollbar()->setvalue(verticalscrollbar()->value() + singlestep);          //scroll byt amount in determined direction,         //you decide how single step... test , see      }      qlistview::mousemoveevent(event); } 

and finally

void mylistview::mousereleaseevent(qmouseevent *event) {     m_scrollstart = qpoint(); //resets scroll drag     qlistview::mousereleaseevent(event); } 

Comments

Popular posts from this blog

javascript - How to get current YouTube IDs via iMacros? -

c# - Maintaining a program folder in program files out of date? -

emulation - Android map show my location didn't work -