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, 5:50
Сообщение #2


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

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

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




Репутация:   94  


Анна, я использую такой код:
void ModelController::del()
{
    qDebug() << "ModelController::del()";
    emit beforeDelete();
    // Узнаем выделенную строку
    QItemSelectionModel    *sm = m_view->selectionModel();
    QModelIndexList indexes = sm->selectedIndexes();

    foreach(QModelIndex index, indexes){
        int row = index.row();
        if (!m_model->removeRows(row,1)){
            qDebug() << "\tERROR =" << m_model->lastError();
            break;
        }else{
            m_view->setRowHidden(row, true);
        }
    }
    setFase(MayFinish);
    emit deleted();
}
никогда не было проблем
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




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