On 04/18/2012 10:33 AM, Jason H wrote: > That is wrong, because that is the mouse position of the drop location. > > Here, let me make a picture > +--------------+ > |---deleg.te---| > +--------------+ > > Now the "." in the delegate is the mouse location. When I drop this delegate > on > the widget, I get the location of the "." in the widget coordinates. The > problem > is, if I put an item at that location it is off by > +-------- > |---deleg > > So I need to subtract (10,2 - in characters) from the "." position(10,2) to > get > the proper place in the widget to position the item. This is the offset I am > looking for. >
Perhaps you need to take control of the Drag-Start event and there-by take control of the creation of the dragged image relative to the Drag-Start pos(). Perhaps the information you seek is buried in the mime data provided as part of the drop event. > > > -------------------------------------------------------------------------------- > *From:* Bill Crocker <william.croc...@analog.com> > *To:* interest@qt-project.org > *Sent:* Wednesday, April 18, 2012 10:17 AM > *Subject:* Re: [Interest] Getting QTreeView item click offset for DnD > > On 04/18/2012 10:07 AM, Jason H wrote: >> Please, any help? >> >> I'm stuck. >> > > How about this: > > const QPoint & QDropEvent::pos () const > > Returns the position where the drop was made. > > >> >> -------------------------------------------------------------------------------- >> *From:* Jason H <scorp...@yahoo.com <mailto:scorp...@yahoo.com>> >> *To:* André Somers <an...@familiesomers.nl <mailto:an...@familiesomers.nl>>; > "interest@qt-project.org <mailto:interest@qt-project.org>" >> <interest@qt-project.org <mailto:interest@qt-project.org>> >> *Sent:* Tuesday, April 17, 2012 11:09 AM >> *Subject:* Re: [Interest] Getting QTreeView item click offset for DnD >> >> Yes. However nothing gives me the click coordinates. >> >> I am dragging an item to a subclassed QLabel. When the drop occurs, the >> top-left >> of the item is placed at the mouse cursor. This is wrong. The item should be >> placed at wherever Qt drew it last, which is offset by the mouse coords in >> the >> item. >> >> >> >> -------------------------------------------------------------------------------- >> *From:* André Somers <an...@familiesomers.nl >> <mailto:an...@familiesomers.nl>> >> *To:* "interest@qt-project.org <mailto:interest@qt-project.org>" > <interest@qt-project.org <mailto:interest@qt-project.org>> >> *Sent:* Tuesday, April 17, 2012 11:00 AM >> *Subject:* Re: [Interest] Getting QTreeView item click offset for DnD >> >> 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 <an...@familiesomers.nl >> > <mailto:an...@familiesomers.nl>> > <mailto:an...@familiesomers.nl <mailto:an...@familiesomers.nl>> >> > *To:* interest@qt-project.org <mailto:interest@qt-project.org> > <mailto:interest@qt-project.org <mailto:interest@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? >> >> >> _______________________________________________ >> Interest mailing list >> Interest@qt-project.org <mailto:Interest@qt-project.org> > <mailto:Interest@qt-project.org <mailto:Interest@qt-project.org>> >> http://lists.qt-project.org/mailman/listinfo/interest >> >> >> >> _______________________________________________ >> Interest mailing list >> Interest@qt-project.org <mailto:Interest@qt-project.org> > <mailto:Interest@qt-project.org <mailto:Interest@qt-project.org>> >> http://lists.qt-project.org/mailman/listinfo/interest >> >> > > > _______________________________________________ > Interest mailing list > Interest@qt-project.org <mailto:Interest@qt-project.org> > http://lists.qt-project.org/mailman/listinfo/interest > > _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest