Название: Добавление строк в QTableView (РЕШЕНО) Отправлено: Day от Март 09, 2018, 14:35 Хранилищем данных в моей модели является некая самопальная структура (Типа StringList)
Когда я пытаюсь добавить строку в таблицу, я добавляю в эту структуру элемент средствами, не использующими Qt, Т.е. без всяких InsertRow. И данные добавляются (проверял), и rowCount() дает правильное значение, и запись в базу данных (тоже самопальную) происходит. Только вот визуально в таблице их нет. То есть Вьюха не знает, что строки добавлены. Я вставил логирование в метод модели date(), но там происходит обращение только до старого количества строк ( ind.row()) Qt 4.5.2. И методов beginResetModel() и endResetModel() нет. Есть modelReset(), reset() и modelAboutToBeReset(). Вопрос - как их грамотно использовать? Название: Re: Добавление строк в QTableView Отправлено: Day от Март 09, 2018, 23:25 Я в тупике. Все эти методы - protected
tableView->reset() и tableView->update(QModelIndex()) никакого эффекта не дали. Как же сообщить ему, что в модели появилась еще одна строка? Название: Re: Добавление строк в QTableView Отправлено: Day от Март 10, 2018, 00:34 Все получилось!!!
В моей модели, унаследованной от QAbstractTableModel просто метод Код: public: Название: Re: Добавление строк в QTableView Отправлено: Bepec от Март 10, 2018, 02:38 Вьюха знает об обновлении только по сигналам модели.
Reset в данном случае - очень плохой метод, т.к. перетряхивает все данные модели. Вам нужно использовать методы модели. Это стандартные методы модели, которые являются обёрткой для сигналов. Для вставки новой строки beginInsert, endInsert. (row/column) Код: beginInsertRows(index(rowCount(),0), rowCount(), rowCount()+ 1); Код: rootItem->child(row)->infoStruct.name = name; Тут всё аналогично с инсертом. Без использования этих методов модели бесполезны и даже вредны. Тут главное понять смысл их использования и потом всё легче лёгкого. Название: Re: Добавление строк в QTableView Отправлено: Day от Март 10, 2018, 11:27 Верес, Большое спасибо за разъяснения!
Тут на меня какое-то затмение нашло. Смутило то, что все эти методы - protected. Видать, от перегрева. И не допер до простого. Наследуемся от QAbstactItemModel, и они все доступны! А с применениями всех этих методов, да, буду разбираться. Главное - я понял, что все эти методы можно применять только в методах моей модели |