Название: [Решено]Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 12:05 Подскажите, возможно ли обновление модели, но так чтобы
итемы в ней не сворачивались??? А то если добавляешь элемент в модель, надо заново разворачивать ее с корня, это не удобно. Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 17, 2013, 12:07 делать не beginResetModel(), а beginInsertRows() при добавлении элемента
Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 12:21 делать не beginResetModel(), а beginInsertRows() при добавлении элемента А данные??? Или они автоматически подтянуться? Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 17, 2013, 12:22 Что "а данные"? Не понял вопроса
Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 12:29 При формирование модели
Код: QVariant ModelBrowser::data(const QModelIndex &index, int role) const c ее помощью мы отображаем данные. А когда я добавил элемент в модель, то данные автоматически подтянуться? Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 17, 2013, 12:30 опять ниче не понял. Куда подтянутся?
Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 12:33 В модель
Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 17, 2013, 12:37 нет, в модель ты их должен добавить сам, как и до этого. Но вместо beginResetModel()/endResetModel() надо использовать beginInsertRows()/endInsertRows() для оповещения view
Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 12:49 Классно
т.е Код: void QAbstractItemModel::beginInsertRows ( const QModelIndex & parent, int first, int last ) а индекс, и все прочее делайте сами Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 17, 2013, 12:55 Он не добавляет строчку, он извещает вью о том, что в модель добавились данные
Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 13:13 сделал вот так
Код все бы ничего только TreeModelBrowser имеет древовидную структуру и прежде чем у меня добавленный элемент модели у меня отображается во view нужно свернуть все дерево, а потом заново его раскрыть. Название: Re: Обновление модели Отправлено: Bepec от Сентябрь 17, 2013, 13:17 Гы...
Begin // действия с данными End Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 13:23 Гы... Begin // действия с данными End Код
Это не будет работать? Название: Re: Обновление модели Отправлено: Bepec от Сентябрь 17, 2013, 13:38 Кхм. Возможно вы что-то не понимаете в model-view.
data будет работать. Чтобы View адекватно реагировало на изменение данных в модели необходимо извещать view об изменениях. Специально для этого есть пары функции beginInsertRows/Columns, beginRemoveColumns/Rows. Собственно операции нужно производить в промежутке между begin и end. Код: //Вставляем данные в модель PS или я опять вас не так понял. Тогда что со мной твориться О_о Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 17, 2013, 13:42 сделал вот так Код все бы ничего только TreeModelBrowser имеет древовидную структуру и прежде чем у меня добавленный элемент модели у меня отображается во view нужно свернуть все дерево, а потом заново его раскрыть. Я вот не вижу тут никакого нового элемента Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 13:57 Сделал вот так
Код
но тот же эффект... ??? Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 17, 2013, 14:02 наверно внутри ce->appendChild(); скрыта какая-то магия, недоступная нам
Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 14:03 наверно внутри ce->appendChild(); скрыта какая-то магия, недоступная нам оч смешно Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 17, 2013, 14:03 смешно то, что ты почему-то думаешь, что мы все знаем что же происходит внутри ce->appendChild();
Ну и reinterpret_cast это очень опасно в таком случае, потому что никаких проверок при этом не происходит Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 14:11 Код: class CommonElement: public QObject Код: class Station: public CommonElement Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 17, 2013, 14:26 С использованием resetModel у тебя это вот добавление работает?
Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 14:32 Да
Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 17, 2013, 14:34 Покажи код, который добавляет элемент и выполняет resetModel
Название: Re: Обновление модели Отправлено: demaker от Сентябрь 17, 2013, 14:44 Покажи код, который добавляет элемент и выполняет resetModel Код
Код
Название: Re:[Решено] Обновление модели Отправлено: demaker от Сентябрь 18, 2013, 10:53 Как код? Правильный или нет???
Название: Re: Обновление модели Отправлено: mutineer от Сентябрь 18, 2013, 10:59 Если добавление работает корректно, то по идее достаточно заменить beginResetModel()/endResetModel() на beginInsertRows()/endInsertRows()
|