Russian Qt Forum
Ноябрь 05, 2024, 22:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Удалить все строки таблицы QTableWidget  (Прочитано 3679 раз)
phpCoder
Гость
« : Январь 01, 2015, 00:37 »

Добрый вечер.
Есть таблица QTableWidget с несколькими колонками и несколькими строками.

Вопрос: как удалить все строки таблицы? Именно строки, а не ячейки.

Если использовать setRowCount(0), то получается то, что мне нужно.

Эксперимент:
Давайте выделим ЛКМ какую-нибудь ячейку и нажмем на кнопку удаления (вызов setRowCount(0)). Что будет? Приложение сдохнет. Диагноз: у Qt маразм, раз он не может убрать фокус/индекс/выделение или что там у него..., после удаления последней строки.
Если же вызывать setRowCount(0) до того, как ЛКМ выделишь ячейку, то все ок.

Это также относится к clear(), clearContents(), удалению строк в цикле через removeRow().

Как лечится?
Записан
phpCoder
Гость
« Ответ #1 : Январь 01, 2015, 00:38 »

Да, setCurrentCell(-1,-1) не помогает.
Записан
arhohryakov
Гость
« Ответ #2 : Январь 01, 2015, 13:54 »

Создал тестовое приложение с QTableWidget и QPushButton, которая при нажатии вызывает setRowCount(0).
Всё работает как без выделения ячейки, так и с выделением.

Подозрение, что Вы, например, где-нибудь используете выбранный QTableWidgetItem, которого после удаления уже нет.
В дебаге посмотреть на какой строчке валится приложение Подмигивающий
Ну или минимальный нерабочий пример в студию Подмигивающий
Записан
phpCoder
Гость
« Ответ #3 : Январь 05, 2015, 09:55 »

Проблема решилась. Дело было в сигнале
Код
C++ (Qt)
void QTableWidget::​currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
При удалении всех строк он вызывается и в параметр currentRow = -1. Нужно проверять его, чтобы он был >= 0.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Январь 05, 2015, 10:07 »

[OFF]
Диагноз: у Qt маразм, раз он не может убрать фокус/индекс/выделение или что там у него...,
С такими резвыми заявлениями лучше быть осторожнее  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 23.