[Closed]QListView : QDrag pixmap for custom widget.
-
I added a custom widget to my listview using QListView::setIndexWidget(), which works fine and displays the custom widget as items in the listView, Apart from this I added an additional internal drag and drop to the listview using :
setDragEnabled(true);
setAcceptDrops(true);
setDragDropMode(QAbstractItemView::InternalMove);
setDropIndicatorShown(true);
setMovement(QListView::Snap);Which displays the list as :-
!http://imageshack.us/a/img841/4781/capturemyj.png(listView)!But when I drag the list item , the drag pixmap is empty it just shows a blank image like (windows 7)
!http://imageshack.us/a/img339/4898/capturesjz.png(image)!But i want to show the pixmap of the selected Item, Also if i drop the item then at that particular index the item is blank.
Note : I am just using internal drag and drop. I have not implemented
@void dragEnterEvent(QDragEnterEvent *event);
void dragMoveEvent(QDragMoveEvent *event);
void dropEvent(QDropEvent *event);
void startDrag(Qt::DropActions supportedActions);@If the former does not work then i think i need to implement using the above functions.
-
Ok so now I am trying to implement the drag and drop using the above methods. Is there any possibility to grab/get the pixmap of the selected item in the QListView ?
-
That grabbing is what the default implementation already does. However, what you are doing is overlaying the default list items with a widget. So, you'll need to grab the pixmap from the widget. Lucky for you, QWidget has the render() method that allows you to render a widget on any paintdevice or using any QPainter...
-
Thanks Andre,
But how to use it and where to use it , I am adding the widets to the listView using setIndexWidget().
I also have a listViewDelegate subclassed from QStyledItemDelegate , Should I render the widget in the delegate ? -
Can't you get a pointer to the widget using indexWidget()?
You do not need to render the widget in the delegate, I think, though it might work as a workaround to set a render of the widget as an image in the displayRole of the list view. That's a hack though, not a solution.