ехе-шник там-же ... Проблемы в диалоге редактирования таблицы (через модель !).
Для того, чтобы к нему добраться, нужно в открытом конфиге (прилагается)
пройти по дереву от корня /->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);
Для добавления и удаления поля в модели есть соотв-щие ф-ции
beginInsertRows(parent, position, position + rows - 1); // !!!
success = parentItem->insertChildrens(position, rows);
endInsertRows(); // !!!
и
beginRemoveRows(parent, position, position + rows - 1); // !!!
success = parentItem->removeChildrens(position, rows);
endRemoveRows(); // !!!
Но в модели нет функций
beginSwapRows(parent, position, position + 1);
endSwapRows();
Как это можно реализовать (с отображением в TreeView-e), как в случае с удалением ?
3. Почему при открытии диалога, строка выбора в TreeView-e скачет хз куда ?
Странно это потому, что в оригинальном проекте, когда TreeView является
MdiChild-ом, такого не наблюдается ... Это так, из спортивного интереса :-)
Заранее благодарен за помощь.