Я создал собственную модель списка, следуя этому руководству Создание модели cusotm для QListView . Я могу показать список пользовательских объектов (например, «Сотрудник», как в примере), но я не знаю, как восстановить выбранные объекты (могу ли я получить «связанные» объекты напрямую?).
Может быть, мне нужно что-то сделать с этой командой:
myLV->selectionModel()->selectedIndexes();
Но я не знаю, как вернуть исходные пользовательские объекты.
[ПРАВИТЬ]
До сих пор я решил вернуть объект, добавив собственный метод в мою модель списка:
Employee* MyEmployeeListModel::getAtSelectedIndex(const QModelIndex& index){
return employees_.at(index.row());
}
И затем вызвав это в главном окне:
QModelIndexList selectedRows;
QItemSelectionModel * selmodel = ui->employeesLV->selectionModel();
selectedRows = selmodel->selectedRows();
MyEmployeeListModel* currModel = dynamic_cast <MyEmployeeListModel*>(ui->employeesLV->model());
for (const QModelIndex & index : selectedRows){
Employee* item=currModel->getAtSelectedIndex(index);
if (item) {
// do something with the item
}
}
Теперь я хочу знать, действительно ли это лучшая практика или нет.