Qt Arrastrar y soltar QListView eliminando el elemento en el que se lanzó

Estoy trabajando en un pequeño QlistView que es Sortable.

    iListView = new QListView(this);
    //Creating a standard item model
    iStandardModel = new QStandardItemModel(this);

    //First item
    QStandardItem* item1 = new QStandardItem(QIcon(":/cover-story-album-art.jpg"),"First Item");
    //Second item
    QStandardItem* item2 = new QStandardItem(QIcon(":/cover-story-album-art.jpg"),"Second item");
    //third item 
    QStandardItem* item3 = new QStandardItem(QIcon(":/cover-story-album-art.jpg"),"Third![enter image description here][1] item");

    //Appending the items into model
    iStandardModel->appendRow(item1);
    iStandardModel->appendRow(item2);
    iStandardModel->appendRow(item3);

    //Setting the icon size
    iListView->setIconSize(QSize(40,30));

    //Setting the model
    iListView->setModel(iStandardModel);

    //Setting listview geometry
    iListView->setGeometry(QRect(0,0,240,320));
    iListView->setDragEnabled(true);
    iListView->setAcceptDrops(true);
    iListView->setDragDropMode(QAbstractItemView::InternalMove);

Bueno, el método de arrastrar y soltar funciona, pero hay un problema si suelto el elemento en cualquier otro elemento reemplazado que no sea el final de la lista. El elemento "arrastrado" reemplaza al elemento "liberado en".

Captura de pantalla de QListView en diferentes escenarios.

Respuestas a la pregunta(1)

Su respuesta a la pregunta