Пытаюсь скомбинировать QTreeView + QAbstractItemModel + QSortFilterProxyModel.
Когда вместе работают QTreeView + QAbstractItemModel – все нормально.
Когда я в эту конструкцую добавляю QSortFilterProxyModel между TreeView и source model – все разваливается
Что именно происходит: при вставке новой строки выпадает segmentation fault, причем это происходит очень часто,
но нестабильно, иногда удается вставить строку без ошибки.
Отладка показала, что ошибка появляется уже после того, как мой код insertRow отработал.
Вот на скрине стек выполнения (в стеке нет моего кода) и crash point:
http://i047.radikal.ru/1310/f9/2833f1f5d077.jpgТ.к. непосредственно мои куски кода проблем не вызывают (проблема появляется после) -
сделала минимальный пример, чтобы продемонстрировать проблему в целом:
http://rapidshare.com/share/06FB98367B2C08268216D7EDDEF771EE(дублирую вложением в пост)
В нем есть некоторая избыточность:
- TreeView не напрямую вставлен в MainWindow, а сначала в QDialogue (который вставлен в MainWindow);
- начальные данные неприлично захардкодены (см. ExObject constructor);
- оставлен расчет поля order.
Чтобы увидеть ошибку:
- открываем и собираем проект;
- запускаем: видим в окне поле текстового ввода и дерево;
- выбираем в дереве ветку: например x20 (в смысле - мышкой в нее тыкаем, чтобы selection был);
- ставим курсор в поле текстового ввода, печатаем “x25” и жмем Enter;
- предполагается, что новая ветка x25 будет вставлена после x20 (после выбранной ветки).
Если ветка вставилась - повторить аналогичные действия пару-тройку раз - segmentation fault не заставит себя ждать.
Если все равно все нормально работает - разверните ветку x20 и вставьте новую ветку после x201 (вложенную в x20).
Моя текущая среда:
Qt Creator 2.8.1 Based on Qt 5.1.1 (MSVC 2010, 32bit) Built at13:35:01, Aug 26 2013 Revision c3ed746c24
Qt 5.1.1 (не знаю, как revision посмотреть)
MinGW 4.8
Те же проблемы были на Qt Creator 2.7.1 + Qt 5.1.0 + MinGW 4.8
Это в моем коде что-то не так (я пропустила какие-то важные действия)? Библиотека так работает?
Может у кого уже есть рабочий пример связки QTreeView + QAbstractItemModel + QSortFilterProxyModel?