Название: editable tree model example - новые данные для модели Отправлено: Karl-Philipp от Сентябрь 26, 2008, 16:07 Всем привет!
в примере Editable Tree Model хочу удалить данные модели, не трогая rootItem, и заполнить модель новыми данными из файла. Для этого удаляю список дочерних TreeItem, после чего подсовываю новые данные, находящиеся в файле default1.txt: Код: void MainWindow::slotLoadNewData() В результате получается, что на дереве остаются невидимые айтемы из предыдущей модели. Если в первой колонке кликнуть в месте их примерного нахождения - отображается индекс (в статусбаре), после двойного клика появляется текст айтема. При этом данных в других колонках не существует. Новые данные соответсвенно не показываются. Подскажите, пожалуйста, куда копать? Qt 4.4.1, VS2002 Название: Re: editable tree model example - новые данные для модели Отправлено: Kolobok от Сентябрь 26, 2008, 22:28 Код: void TreeModel::setNewData(const QString &data) Название: Re: editable tree model example - новые данные для модели Отправлено: Karl-Philipp от Сентябрь 26, 2008, 22:49 пробовал - не помогло...
таки чуть помогло - следа от предыдущих символов не осталось, а вот новые данные не показываются Название: Re: editable tree model example - новые данные для модели Отправлено: Kolobok от Сентябрь 27, 2008, 00:10 А новые данные есть?
Название: Re: editable tree model example - новые данные для модели Отправлено: ритт от Сентябрь 27, 2008, 01:46 Код: for (int column = 0; column < model->columnCount(); ++column) Название: Re: editable tree model example - новые данные для модели Отправлено: Karl-Philipp от Сентябрь 27, 2008, 08:19 Код: for (int column = 0; column < model->columnCount(); ++column) А новые данные есть? точно есть: файл с новыми данными присутствует и данные упаковываются.Название: Re: editable tree model example - новые данные для модели Отправлено: spirit от Сентябрь 27, 2008, 10:27 /*оффтоп
Цитировать Код: for (int column = 0; column < model->columnCount(); ++column) Цитировать void QHeaderView::setResizeMode ( ResizeMode mode ) Sets the constraints on how the header can be resized to those described by the given mode. т.е. в данном случае Код: ....->setResizeMode (QHeaderView::ResizeToContents); Название: Re: editable tree model example - новые данные для модели Отправлено: Karl-Philipp от Сентябрь 27, 2008, 10:30 пасиб за ответ, но за что взял, за то продал :)
а вот данные перестали записываться в модель после того, как пытаюсь подсунуть новые из другого файла. Разберусь - напишу. Название: Re: editable tree model example - новые данные для модели Отправлено: spirit от Сентябрь 27, 2008, 10:35 а че нельзя дерево перестроить с самого начала,
если все чилды прибиваются и остается только один рут? Название: Re: editable tree model example - новые данные для модели Отправлено: Karl-Philipp от Сентябрь 27, 2008, 10:37 а че нельзя дерево перестроить с самого начала, так и делаю :)если все чилды прибиваются и остается только один рут? Название: Re: editable tree model example - новые данные для модели Отправлено: Karl-Philipp от Октябрь 02, 2008, 10:29 спасибо колобку, reset() модели помог. А данные не считывались из-за того, что в файле ресурсов не указал другой файл из которого надо считывать данные.
продолжаю разбирать пример editable tree model. Возник вопрос по методу Код: void MainWindow::insertRow() на сколько я понял, сначала определяется место (индекс) куда вставлять, а затем с помощью insertRow() вставляется новый ряд. Дальше данные помещаются в модель, используя setData(). Возникает вопрос: Цитировать bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) [virtual] Для какого айтема вставляются ролевые данные, если вставился только ряд в модель, а про вставку айтемов в этот ряд речи не было ???Sets the role data for the item at index to value. Returns true if successful; otherwise returns false. В модели QStandardItemModel все предельно просто: insertRow() вставляет список указателей на айтемы в нужное место, а как в данном примере? Помогите пожалуйста разобраться. Название: Re: editable tree model example - новые данные для модели Отправлено: Karl-Philipp от Октябрь 02, 2008, 11:15 похоже понял в чем дело:
вставляется ряд с помощью insertRow(). Код: inline bool QAbstractItemModel::insertRow(int arow, const QModelIndex &aparent) вызывается переопределенный в данной модели insertRows() Прав ли я? Название: Re: editable tree model example - новые данные для модели Отправлено: Karl-Philipp от Октябрь 02, 2008, 11:51 да прав же! :)
|