[Interest] Getting QTreeView item click offset for DnD

André Somers andre at familiesomers.nl
Tue Apr 17 17:00:47 CEST 2012


Op 17-4-2012 16:54, Jason H schreef:
> Well I am confused about how the view works.
> I'm using QStandardItems, so whatever Qt does with those... I can't 
> find documentation anywhere...
>
The items in the model do not become widgets. That would be very 
inefficient. Instead, they are rendered in the view using a delegate 
that has been set on your view. By default, that is a QStyledItemDelegate.

Anyway, for D&D purposes, an item is just a package of data. At the 
moment you have the model index, you have access to the data of the item.

Perhaps the question should be: why are you reimplementing the 
mousePressEvent in this context at all? Did you study the "Using Drag 
and Drop with Item Views" topic from the Model/View Programming 
documentation page?

André


>
> ------------------------------------------------------------------------
> *From:* André Somers <andre at familiesomers.nl>
> *To:* interest at qt-project.org
> *Sent:* Tuesday, April 17, 2012 10:40 AM
> *Subject:* Re: [Interest] Getting QTreeView item click offset for DnD
>
> Op 17-4-2012 16:35, Jason H schreef:
>> I need to repeat this. I'm still lost.
>> here is my code (child is always NULL):
>> voidDataPointTreeView::mousePressEvent(QMouseEvent*event)
>> {
>> 	QTreeView::mousePressEvent(event);
>> 	QModelIndex  mi  =  indexAt(event->pos());
>> 	QWidget  *child  =  indexWidget(mi);
>> 	//QWidget  *child  =  static_cast<QWidget*>(childAt(event->pos()));
>> 	if  (!child)
>> 		return;
>>
>> 	m_dragOffset  =  event->pos()  -  child->pos();
>> }
>>
> Are you even using widgets for your items? I mean: do you call 
> setIndexWidget anywhere? If not, perhaps you should check what 
> indexWidget() actually returns?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20120417/d902f478/attachment.html>


More information about the Interest mailing list