Название: модель представление для QTreeView Отправлено: sektor от Январь 31, 2016, 00:07 Разбираюсь с моделью QStandartItemModel. Хочу создать древовидную иерархию TreeView, создал виджет с тремя кнопками, добавить родителья, добавить наследника, и удалить отмеченный item. Все получается кроме удаления. Помогите реализовать удаление itema.
Код: #ifndef MAINWINDOW_H Код: #include "mainwindow.h" Название: Re: модель представление для QTreeView Отправлено: kai666_73 от Январь 31, 2016, 00:42 Может так:
Код: model->removeRows(index.row(), 1, index.parent()); я вообще метода removeRow в упор не вижу Название: Re: модель представление для QTreeView Отправлено: sektor от Январь 31, 2016, 00:53 Спасибо :) получилось, запарился.
Название: Re: модель представление для QTreeView Отправлено: sektor от Январь 31, 2016, 15:28 Не подскажете как лучше все итемы хранить. ? Чтобы, можно было все это сериализовать с помощью QSettings. Как можно зная наследник узнать родителя ???
Название: Re: модель представление для QTreeView Отправлено: kai666_73 от Январь 31, 2016, 23:23 Не подскажете как лучше все итемы хранить. ? Чтобы, можно было все это сериализовать с помощью QSettings. Как можно зная наследник узнать родителя ??? Про сериализацию древовидной структуры: я бы читал/писал xmlПро родителя вопрос не совсем понял, имеется ввиду по индексу определить? Тогда Код: QModelIndex::internalPointer() А вообще ассистант - лучший помошник. Название: Re: модель представление для QTreeView Отправлено: sektor от Февраль 01, 2016, 15:31 С этим разобрался. Для сериализации я смотрел примеры с сохронением в XML , для моего случая все таки я думаю QSetting лучше. Столкнулся с проблемой записи итемов в файл.
Код: void MainWindow::saveState(void) Проект компилируется, но при сохранении настроек выдает ошибки: QVariant::load: unable to load type 42. QVariant::save: unable to save type 'QModelIndex' (type id: 42). Чтобы это означало ?? Название: Re: модель представление для QTreeView Отправлено: VPS от Февраль 01, 2016, 15:49 Из документации:
Note: Model indexes should be used immediately and then discarded. You should not rely on indexes to remain valid after calling model functions that change the structure of the model or delete items. If you need to keep a model index over time use a QPersistentModelIndex. Название: Re: модель представление для QTreeView Отправлено: sektor от Февраль 01, 2016, 16:07 Че-то не получается. ???
Код: void MainWindow::saveState(void) QVariant::load: unable to load type 50. QVariant::save: unable to save type 'QPersistentModelIndex' (type id: 50). Версия у меня Qt 5.5 Название: Re: модель представление для QTreeView Отправлено: VPS от Февраль 01, 2016, 16:25 Возможно у Вас такая же проблема, как здесь (http://www.forum.crossplatform.ru/index.php?showtopic=981&view=findpost&p=38417).
Название: Re: модель представление для QTreeView Отправлено: sektor от Февраль 01, 2016, 16:44 Цитировать Возможно у Вас такая же проблема, как здесь. Да... читал я это. У него проблемы передачи структуры. Название: Re: модель представление для QTreeView Отправлено: gil9red от Февраль 01, 2016, 17:16 Я не пойму, для чего использовать формат ini для сохранения дерева?
возьмите xml или json -- намного больше они подходят для сохранения структур данных любой вложенности Название: Re: модель представление для QTreeView Отправлено: sektor от Февраль 02, 2016, 09:46 Позволяет ли XML сохранять мета объекты к примеру QItemModel ? Если есть примеры можете привести ?
Название: Re: модель представление для QTreeView Отправлено: gil9red от Февраль 02, 2016, 11:46 Позволяет ли XML сохранять мета объекты к примеру QItemModel ? Если есть примеры можете привести ? XML позволяет сохранить все, что угодно. Набросал пример: https://github.com/gil9red/SimplePyScripts/tree/master/qt_tree_model_xml Позволяет создавать дерево любой вложенности и сохранить/восстановить его из xml-файла. Полностью с использованием Qt, но на питоне -- на нем быстрее писать чем на с++ Синтаксис не особо отличается от плюсов И я вот не могу понять, а зачем создавать два списка и в них хранить элементы, если этим же занимается модель? Да и с такими списками возможно только два уровня вложенности дерева сохранить... Можно же на уровне гуи ограничить уровень вложенности, если в этом была задумка... Название: Re: модель представление для QTreeView Отправлено: sektor от Февраль 02, 2016, 13:33 Цитировать И я вот не могу понять, а зачем создавать два списка и в них хранить элементы, если этим же занимается модель? Я просто читаю учусь и это старый вариант был. Сейчас я все исправил :)Спасибо большое за пример. Название: Re: модель представление для QTreeView Отправлено: gil9red от Февраль 02, 2016, 13:41 Цитировать И я вот не могу понять, а зачем создавать два списка и в них хранить элементы, если этим же занимается модель? Я просто читаю учусь и это старый вариант был. Сейчас я все исправил :)Спасибо большое за пример. Да на здоровье :) |