2013-06-06 5 views
4

Я использую QStandardItemModel внутри QTableView. Здесь у меня есть две кнопки & QTableView внутри моего главного окна. Строки будут меняться внутри модели. Две кнопки для добавления/удаления строки (тестовый пример).QStandardItemModel - удалить строку

Добавление строки в модели работает, слот для ADD button: -

void MainWindow::on_pushButton_clicked() 
{ 
    model->insertRow(model->rowCount()); 
} 

Но моя программа рушится, когда я удалить строку из модели, слот для Delete button: -

void MainWindow::on_pushButton_2_clicked() 
{ 
    QModelIndexList indexes = ui->tableView->selectionModel()->selection().indexes(); 
    QModelIndex index = indexes.at(0); 
    model->removeRows(index.row(),1); 

} 

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

Редактировать: ----

Получил его работу.

QModelIndex currentIndex = ui->tableView->selectionModel()->currentIndex(); 
model->removeRow(currentIndex.row()); 
+1

Что показывает 'indexes.size()'? – Amartel

+0

Приложение @Amartel терпит крах – Katoch

+0

, пожалуйста, предложите, как заставить его работать? – Katoch

ответ

2

Мое предложение - вы пытаетесь удалить строку без выбора. Попробуйте следующее:

void MainWindow::on_pushButton_2_clicked() 
{ 
    QModelIndexList indexes = ui->tableView->selectionModel()->selectedRows(); 
    while (!indexes.isEmpty()) 
    { 
     model->removeRows(indexes.last().row(), 1); 
     indexes.removeLast(); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^