Название: прокси из QAbstractProxyModel Отправлено: unkeep от Октябрь 22, 2013, 15:20 сделал свою проксю из базового класса QAbstractProxyModel и передал её виджету, но он показывает только хедер, а данные не показывает. Причём data возвращает правильные значения. А во вьюхе пусто..
вот код, прокси просто вызывает методы источника, без преобразований. Индексы тоже совпадают .h Код
.cpp Код
Название: Re: прокси из QAbstractProxyModel Отправлено: VPS от Октябрь 22, 2013, 19:50 Попробуйте так (http://www.prog.org.ru/index.php?action=dlattach;topic=25881.0;attach=6555).
Название: Re: прокси из QAbstractProxyModel Отправлено: unkeep от Октябрь 23, 2013, 10:48 Попробуйте так (http://www.prog.org.ru/index.php?action=dlattach;topic=25881.0;attach=6555). попробовал, данные показались. Но при попытке развернуть узел вылетает. заметил что тут у вас нету mapToSorce для parent/child Код
однако, когда добавил, то вообще запускаться перестало. странно, я вообще думал раз сортировки и фильтрации нет, то индекс из другой модели должен работать(row/column/parent же одинаковые) Название: Re: прокси из QAbstractProxyModel Отправлено: unkeep от Октябрь 23, 2013, 10:58 в общем оставил index(), parent() как у вас(объясните почему так, по логике в исходную модель передаётся чужой индекс)
А ошибка была тут: Код
а должно быть так: Код
Название: Re: прокси из QAbstractProxyModel Отправлено: mutineer от Октябрь 23, 2013, 11:00 В индексе кроме строки и столбца содержится еще и указатель на модель, которая этот индекс породила. Поэтому в твоей первой версии индекс указывал не на ту модель
Название: Re: прокси из QAbstractProxyModel Отправлено: unkeep от Октябрь 23, 2013, 11:37 хорошо, теперь в качестве источника для этой прокси(она пока ничего не делает, тупо дёргает источник) ставлю экземпляр QSortFilterProxyModel. Данные показываются, но при развороте узла - вылетает не с тем индексом.( QSortFilterProxyModel: index from wrong model passed to mapToSource)
почему так происходит? какая разница что я подсунул вместо источника? ну отсортировались данные в источнике, самая внешняя прокся только передаёт эти данные в том же порядке что и в источнике... Название: Re: прокси из QAbstractProxyModel Отправлено: mutineer от Октябрь 23, 2013, 11:49 тебе вообще надо mapToSource переопределять? Для обычной сортировочно-фильтрующей модели это не требуется
Название: Re: прокси из QAbstractProxyModel Отправлено: unkeep от Октябрь 23, 2013, 11:52 тебе вообще надо mapToSource переопределять? Для обычной сортировочно-фильтрующей модели это не требуется я от QAbstractProxyModel наследовался, там mapToSource без реализации. а вообще цель таккая: есть исходная модель есть модель для сортировки (наследуюсь от QSortFilterProxyModel и переопределяю там filterAcceptRow) и есть модель для поиска :QAbstractProxyModel(в ней будет переопределен метод data для подсветки индексов попадающих в результаты поиска), в неё вкладываю отсортированную прокси-модель модель для поиска передаю в QTreeView а также в свой виджет для поиска может я что-то не так мудрю? Название: Re: прокси из QAbstractProxyModel Отправлено: VPS от Октябрь 23, 2013, 14:12 Не совсем понятно, Вы хотите выделить строки в представлении, которые соответствуют критерию поиска?
Название: Re: прокси из QAbstractProxyModel Отправлено: unkeep от Октябрь 23, 2013, 14:44 Не совсем понятно, Вы хотите выделить строки в представлении, которые соответствуют критерию поиска? да. и кроме этого будет ещё навигация след\предыд. по результатам поиска(то есть в представлении результаты выделяются одним цветом, а текущий результат другим). Название: Re: прокси из QAbstractProxyModel Отправлено: VPS от Октябрь 23, 2013, 14:59 По моему, для выделения элементов в отсортированном списке, которые соответствуют критериям поиска можно воспользоваться обычной "QSortFilterProxyModel" и "tableView->selectionModel()"...
П.С.: т.е. оставить одну модель, которую вы используете для сортировки... Чего то я запутался... :) Название: Re: прокси из QAbstractProxyModel Отправлено: unkeep от Октябрь 23, 2013, 15:18 можно конечно одной проксёй обойтись и в ней всё сделать. но я хотел разнести ответственности по классам. Уже склоняюсь оставить эту затею...
Название: Re: прокси из QAbstractProxyModel Отправлено: VPS от Октябрь 24, 2013, 13:52 Посмотрите здесь (http://blog.qt.digia.com/blog/2012/01/12/qt-commercial-support-weekly-10-sorting-filtering-and-advanced-manipulation-with-proxy-models-2/) пример создания пользовательской модели, унаследованной от QAbctractProxyModel.
Может пригодится. |