Название: Удалить все строки таблицы QTableWidget Отправлено: phpCoder от Январь 01, 2015, 00:37 Добрый вечер.
Есть таблица QTableWidget с несколькими колонками и несколькими строками. Вопрос: как удалить все строки таблицы? Именно строки, а не ячейки. Если использовать setRowCount(0), то получается то, что мне нужно. Эксперимент: Давайте выделим ЛКМ какую-нибудь ячейку и нажмем на кнопку удаления (вызов setRowCount(0)). Что будет? Приложение сдохнет. Диагноз: у Qt маразм, раз он не может убрать фокус/индекс/выделение или что там у него..., после удаления последней строки. Если же вызывать setRowCount(0) до того, как ЛКМ выделишь ячейку, то все ок. Это также относится к clear(), clearContents(), удалению строк в цикле через removeRow(). Как лечится? Название: Re: Удалить все строки таблицы QTableWidget Отправлено: phpCoder от Январь 01, 2015, 00:38 Да, setCurrentCell(-1,-1) не помогает.
Название: Re: Удалить все строки таблицы QTableWidget Отправлено: arhohryakov от Январь 01, 2015, 13:54 Создал тестовое приложение с QTableWidget и QPushButton, которая при нажатии вызывает setRowCount(0).
Всё работает как без выделения ячейки, так и с выделением. Подозрение, что Вы, например, где-нибудь используете выбранный QTableWidgetItem, которого после удаления уже нет. В дебаге посмотреть на какой строчке валится приложение ;) Ну или минимальный нерабочий пример в студию ;) Название: Re: Удалить все строки таблицы QTableWidget Отправлено: phpCoder от Январь 05, 2015, 09:55 Проблема решилась. Дело было в сигнале
Код При удалении всех строк он вызывается и в параметр currentRow = -1. Нужно проверять его, чтобы он был >= 0. Название: Re: Удалить все строки таблицы QTableWidget Отправлено: Igors от Январь 05, 2015, 10:07 [OFF]
Диагноз: у Qt маразм, раз он не может убрать фокус/индекс/выделение или что там у него..., С такими резвыми заявлениями лучше быть осторожнее :) |