Sounds great, but I get some runtime error:
QPainter::begin: Paint device returned engine == 0, type: 2
QWidget::render: Cannot render with an inactive painter
Edit:
There is some modification on your suggested code neccessary:
const QModelIndex& index = currentIndex();
// Render the pixmap
QPixmap pixmap(visualRect(index).size());
//pixmap.
render(&pixmap, QPoint(), visualRect(index));
// Create the drag
QDrag* drag = new QDrag(this);
drag->setPixmap(pixmap);
...
But anyhow it renders the cell of one index above the selected one.
Maybe that has something to do with the offset parameter (second one in render).
Edit2:
The proper QRect can be calculated with the height of the horizontal header:
render(&pixmap, QPoint(0,0), visualRect(index).translated(0, horizontalHeader()->height() ));