I am trying to make a dialog with two lists, where items can be moved between each list, like so:

I am using a QListView and QStringListModel. How can i move the selected items from one list model to the other?
This is what i have got so far:
void moveToRight() {
leftListView->setUpdatesEnabled(false);
rightListView->setUpdatesEnabled(false);
QModelIndexList indexes = leftListView->selectionModel()->selectedIndexes();
qSort(indexes.begin(), indexes.end());
// Add the selected items to the right list
for (int i = 0; i < indexes.count(); i++) {
//rightModel->insertRow(indexes.at(i).row());
// I'm guessing i could get the QStringList from the model
// and add to that.
}
// Then remove them from the left list
for (int i = indexes.count() - 1; i > -1; --i) {
leftModel->removeRow(0);
}
leftListView->setUpdatesEnabled(true);
rightListView->setUpdatesEnabled(true);
}
void moveToRight() {
QStringListModel* leftModel = (QStringListModel*)leftListView->model();
QStringListModel* rightModel = (QStringListModel*)rightListView->model();
leftListView->setUpdatesEnabled(false);
rightListView->setUpdatesEnabled(false);
QModelIndexList indexes = leftListView->selectionModel()->selectedIndexes();
qSort(indexes.begin(), indexes.end());
// Add the selected items to the right list
for (int i = 0; i < indexes.count(); i++) {
//rightModel->insertRow(indexes.at(i).row());
// I'm guessing i could get the QStringList from the model
// and add to that.
}
// Then remove them from the left list
for (int i = indexes.count() - 1; i > -1; --i) {
leftModel->removeRow(0);
}
leftListView->setUpdatesEnabled(true);
rightListView->setUpdatesEnabled(true);
}
To copy to clipboard, switch view to plain text mode
I do not yet know of a way to add the items to the other model. Also, the removing doesn't seem to work.
Bookmarks