Я создал QListView с QStringListModel.Остановить QListView от удаления записей при перетаскивании
listModel = new QStringListModel(ui->listView);
ui->listView->setModel(listModel);
ui->listView->setEditTriggers(QListView::NoEditTriggers);
ui->listView->setDragDropMode(QListView::InternalMove);
И я добавить элементы с помощью:
void MainWindow::addItem(QString result)
{
if (result == "")
return;
listModel->insertRow(listModel->rowCount());
QModelIndex a = listModel->index(listModel->rowCount()-1);
listModel->setData(a,result);
}
Проблема заключается в том, когда вы перетащите элемент в списке и попытаться переместить его в другое место, он предпочитает переписана деталь, то вы перетащите его. Я никогда не хочу, чтобы элемент был удален действием перетаскивания.
Вам не нужно подклассифицировать модель. Если вы используете модель QStandardItem, вы можете создать QStandardItem, установить соответствующие флаги и использовать этот элемент в '' 'setItemPrototype()' ''. – Michal