Проблемы редактирования DOM модели, Доработка модели к редактируемой |
Здравствуйте, гость ( Вход | Регистрация )
Проблемы редактирования DOM модели, Доработка модели к редактируемой |
JohnZ |
26.11.2014, 13:46
Сообщение
#1
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
В прицепе мин. проект, демонстрирующий проблемы редактирования.
ехе-шник там-же ... Проблемы в диалоге редактирования таблицы (через модель !). Для того, чтобы к нему добраться, нужно в открытом конфиге (прилагается) пройти по дереву от корня /->metadata->catalogues-> далее выбрать любой справочник ( catalogue ) и в нём DblClick на таблице ( element ). Появится диалог редактирования таблицы. Вопросы ... 1. В диалоге реализовано удаление поля, кнопка Del. Сделано по подобию примера editabletreemodel. После удаления, в bool DomItem::removeChildrens(int position, int count) добавлена очистка хэш-а childItems.clear(), т.к. без этого нет отоббражения действия в TreeView-e за диалогом, при развёрнутом дереве полей таблицы. В принципе к функции удаления претензий нет, работает отлично, но правомочна-ли очистка хэш-а в плане утечек памяти ? Ведь указатели на DomItem-ы хранятся только в хэше, а операция QHash::clear() для QHash<int,DomItem*> childItems; не чистит хранимые указатели на DomItem *, которые созданы операцией new !? Если это действительно так, подскажите плз правильную реализацию ... 2. Реализация добавления поля аналогична удалению, в проект не ложил, т.к. там понятно, через отдельный диалог. Проблема в реализации bool swapChildrens(int pos1, int pos2); Для добавления и удаления поля в модели есть соотв-щие ф-ции
и
Но в модели нет функций beginSwapRows(parent, position, position + 1); endSwapRows(); Как это можно реализовать (с отображением в TreeView-e), как в случае с удалением ? 3. Почему при открытии диалога, строка выбора в TreeView-e скачет хз куда ? Странно это потому, что в оригинальном проекте, когда TreeView является MdiChild-ом, такого не наблюдается ... Это так, из спортивного интереса :-) Заранее благодарен за помощь.
Прикрепленные файлы
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 22:46 |