Название: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: Sergeich от Июнь 19, 2008, 13:26 Создаю SQLite базу из одной таблицы вида:
Id | ParentId | Name 1 | 0 | Item1 2 | 1 | Item11 3 | 1 | Item12 4 | 0 | Item2 Код: #include <QtGui> Код: #include <QtGui> (http://prog.org.ru/forum/index.php?action=dlattach;topic=7368.0;attach=253;image) Где я накосячил? Проект в аттаче. Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: ритт от Июнь 19, 2008, 13:34 SqlTreeModel::getChildIndex и SqlTreeModel::getParent могут вернуть -1
мне кажется, проблема из-за нехватки проверки возвращённого значения, например, в SqlTreeModel::parent Код: int row = getChildIndex(parentId, childId); Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: Sergeich от Июнь 19, 2008, 18:09 SqlTreeModel::getChildIndex и SqlTreeModel::getParent могут вернуть -1 Да пробовал уже, не помогает. В отладчике точки прерывания на все исключительные ситуации ставил - не попадает он туда!мне кажется, проблема из-за нехватки проверки возвращённого значения, например, в SqlTreeModel::parent Код: int row = getChildIndex(parentId, childId); Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: ритт от Июнь 19, 2008, 18:40 у тебя валится в QTreeViewPrivate::layout (судя по ассерту), у меня в 4.4.0 - в QTreeView::sizeHintForColumn (и только при раскрытии дочернего списка )
собрал под 4.3.4 - полный порядок могу посоветовать навестить трэкер :) Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: Sergeich от Июнь 19, 2008, 20:05 собрал под 4.3.4 - полный порядок Неа... тоже валится, только намного режемогу посоветовать навестить трэкер :) В трекере вроде такого нет. Придется писать в техподдержку. Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: Sergeich от Июнь 20, 2008, 18:42 Письмо в техподдержку отменяется :D Разобрался, в чем косяк: в методе SqlTreeModel::parent неправильно вычислялся номер строки. Исправил на
Код: QModelIndex SqlTreeModel::parent(const QModelIndex &index) const Если кому надо, прилепил исправленный код. Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: Sergeich от Июнь 20, 2008, 21:27 Пока искал ошибку обнаружил два неприятных момента:
1. QSqlQuery::seek() не перемещается на последнюю запись запроса. Отписался троллям. 2. QTreeView все время обращается к модели, даже в paintEvent! Полный пиздец производительности! Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: Alex03 от Июнь 23, 2008, 06:58 ... Так в этом и весь смыст что во вьюхе данных нет, все данные в модели, поэтому при паинте идёт обращение за данными к модели, тут всё нормально, а вот если модель при этом, например, лезет в БД за данными, то это уже другой вопрос.2. QTreeView все время обращается к модели, даже в paintEvent! Полный пиздец производительности! Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: Sergeich от Июнь 23, 2008, 11:47 ... Так в этом и весь смыст что во вьюхе данных нет, все данные в модели, поэтому при паинте идёт обращение за данными к модели, тут всё нормально, а вот если модель при этом, например, лезет в БД за данными, то это уже другой вопрос.2. QTreeView все время обращается к модели, даже в paintEvent! Полный пиздец производительности! Насчет того что модель каждый раз лезет в БД за данными: это просто тестовый пример, в нормальной реализации я использую кэш. Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: Alex03 от Июнь 23, 2008, 12:15 Вьюха может кэшировать данные, которые в данный момент отображаются, чтобы при каждой перерисовке не лезть за ними в модель. А при сигнале об изменении данных от модели можно тупо сбрасывать кэш. Почему вьюха то? Она тока отображает, на то и вьюха.Насчет того что модель каждый раз лезет в БД за данными: это просто тестовый пример, в нормальной реализации я использую кэш. А вот модель может и кэшировать. В том числе промежуточная порождённая от QxxxxxxProxyModel. P.S. Кстати, а чёб тролям не написать какойнить QAbstractCacheProxyModel/QStandardItemCacheProxyModel? :) Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: DarkPhoenix от Август 26, 2008, 09:07 Подтверждаю написанное trdm, не получается скачать, 404 ошибка.
Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: pastor от Август 26, 2008, 10:38 BW, trdm попросите Sergeich в личке выложить снова
Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: Admin от Август 26, 2008, 10:58 после перезда ченить отвалилось - гляну
Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: Admin от Август 29, 2008, 17:10 атачи грузятся теперь
как оказалось SMF форум не так просто в администрировании - фиг найдешь где есть что Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: CroCIV от Июль 23, 2009, 15:37 Ням, Ням!!! ;D
Название: Re: [Qt 4.4.0, VS2005] Падение в QTreeView при отображении дерева из БД Отправлено: CroCIV от Июль 24, 2009, 09:32 ...Насчет того что модель каждый раз лезет в БД за данными: это просто тестовый пример... Мега жесткий тестовый пример, им можно производительность сервера мерять ;D |