Есть кнопка delete при нажатии которой удаляется выделенная строка. Если в таблице больше одной строки, то проблем с удалением нету, однако когда остается последняя строка, то вылетает(см. фото ошибки). Вылетает именно на
ui.table->removeRow(oldRow);
причем при отладке oldRow = 0 и даже пытался вместо него вставить currentRow(), но возникает та же ошибка.
//Находим позицию удаляемой записи
int oldRow = ui.table->currentRow();
//Удаляем строку с записью из браузера
QTableWidgetItem *it;
it = ui.table->takeItem(oldRow, 0);
it = ui.table->takeItem(oldRow, 1);
delete it;
ui.table->removeRow(oldRow);
пробовал даже так
//Находим позицию удаляемой записи
int oldRow = ui.table->currentRow();
//Удаляем строку с записью из браузера
ui.table->removeRow(oldRow);
Решение заключается в следующем коде
if(oldRow==0 && count == 1)
//убираем выделение строки
ui.table->selectionModel()->clearSelection();
//удаляем строку
ui.table->removeRow(oldRow);
Дело в том что по какой-то причине, когда единственная строка в table выделена, то выдает ошибку при попытке ее удалить. Когда она не выделена, ошибок нет. Предполагаю что когда строка единственная выделена, то он ищет какую еще строку выделить и получает -1 что и выдает ошибку.
Не знаю, почему ваш вариант не работает, возможно, что на момент вызова removeRow в таблице уже нет строк по каким-то причинам. Проверьте это в отладчике.
Если дело не в этом - должен сработать такой вариант:
if(ui.table->rowCount() <= 1)
ui.table->setRowCount(0);
else
ui.table->removeRow(ui.table->currentRow())
Сборка персонального компьютера от Artline: умный выбор для современных пользователей