xtal256
1st July 2011, 13:00
I am trying to make a dialog with two lists, where items can be moved between each list, like so:
http://img40.imageshack.us/img40/1722/dialogh.th.png (http://imageshack.us/photo/my-images/40/dialogh.png/)
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() {
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);
}
I do not yet know of a way to add the items to the other model. Also, the removing doesn't seem to work.
http://img40.imageshack.us/img40/1722/dialogh.th.png (http://imageshack.us/photo/my-images/40/dialogh.png/)
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() {
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);
}
I do not yet know of a way to add the items to the other model. Also, the removing doesn't seem to work.