crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Удаление выделенных элементов из модели
Анна
  опции профиля:
сообщение 27.7.2010, 16:46
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 276
Регистрация: 22.5.2008
Из: Зеленоград
Пользователь №: 181

Спасибо сказали: 30 раз(а)




Репутация:   4  


Получаю от вьювера

QItemSelectionModel *selection = ui.TableView->selectionModel();
QModelIndexList list = selection->selectedRows();  // список индексов выделенных элементов


Хотелось бы удалить выбранные элементы, но беда в том, что в list они стоят в том порядке, в каком выделялись во вьювере (задан режим MultySelection), что не позволяет удалять в цикле, т.к. удаление элемента с меньшим индексом делает другие индексы невалидными.
Может, кто знает, как по-быстрому и красиво решить эту проблему? Или нужно после каждого удаления перезапрашивать ui.TableView->selectionModel(); ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 28.7.2010, 8:37
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


вообще я использую модель QSqlTableModel и политику ManualSubmit, поэтому с индексами ничего не происходит. Т.к. данные не удаляются сразу и это не приводит к перестраиванию индексов.

Если у тебя не возможно реализовать такой вариант, то нужно из индексов получить постоянные индексы, и только потом начинать удаление.

Примерно так:
...
QModelIndexList indexes = sm->selectedIndexes();
QList<QPersistentModelIndex> persistents;
foreach(QModelIndex index, indexes){
    persistents << QPersistentModelIndex(index);
}

// вместо
// foreach(QModelIndex index, indexes){
// используй
foreach(QPersistentModelIndex index, persistents){
...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.12.2024, 14:58