Название: 4.2.2 TableView - изменение кол-ва строк Отправлено: Alexandr_Sky от Май 13, 2007, 14:39 Здравствуйте!
Столкнулся со следующей проблемой: Работаю с TableView. Когда в данных меняется количество строк, то под Linux я просто выполняю в таблице reset(), но в винде это не прокатывает - количество строк остается таким же. Решил это, заново устанавливая модель Код: myTable->setModel(myTable->model()); каждый раз, когда количество строк изменяется, но ИМХО, решение кривое. Может кто знает, как правильно сообщить таблице, что изменились данные, учитывая возможность изменения количества строк? Название: 4.2.2 TableView - изменение кол-ва строк Отправлено: Racheengel от Май 13, 2007, 14:51 хм... по идее, тебе вообще ничего не надо делать с таблицей в этом случае - view сам обязан реагировать на смену данных в модели. ИМХО косяк. 4.2.2 вообще глючноватая какая-то.
Название: 4.2.2 TableView - изменение кол-ва строк Отправлено: Alexandr_Sky от Май 13, 2007, 16:25 Racheengel
Дело в том, что у меня есть своя структура данных. Модель определенным образом их отдает таблице. Когда я что-то меняю в данных, необходимо как-то сообщить об этом. добавлено спустя 1 час 15 минут: Так, кажется понял. Надо было в функции добавления строк сделать Код: beginInsertRows(QModelIndex(), beginPos, endPos); , а между ними делать свою вставку строк. По идее, после endInsertRows() будет посылаться сигнал rowsInserted(), который и заставит TableView правильно перерисоваться. Завтра на работе проверю. :) Название: 4.2.2 TableView - изменение кол-ва строк Отправлено: Racheengel от Май 13, 2007, 23:27 4.2.3 есть возможность попробовать?
Название: 4.2.2 TableView - изменение кол-ва строк Отправлено: Alexandr_Sky от Май 16, 2007, 09:19 Пока нет, накладно качать.
добавлено спустя 27 минут: Да, все правильно - так заработало. Но появилась другая проблема. При удалении большого (даже не большого ~ 1000) количества точек сильно тормозит. Дело в том, что Код: beginRemoveRows(QModelIndex(), first, last); выполняется в цикле. Но вынести за пределы цикла не получается - строки могут удалятся не обязательно подряд. Что можно тут сделать? Название: 4.2.2 TableView - изменение кол-ва строк Отправлено: Racheengel от Май 16, 2007, 11:45 может попробовать blockSignals() ?
Название: 4.2.2 TableView - изменение кол-ва строк Отправлено: Alexandr_Sky от Май 16, 2007, 14:01 Спасибо, попробую.
|