Russian Qt Forum

Qt => Общие вопросы => Тема начата: demaker от Сентябрь 01, 2016, 07:46



Название: фильтрация и сортировка в отдельном потоке
Отправлено: demaker от Сентябрь 01, 2016, 07:46
Скажите. Можно ли вынести фильтрацию или сортировку
данных модели в отдельный поток к примеру с помощью
QtConCurrent.


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: Авварон от Сентябрь 02, 2016, 08:43
Не возражаю


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: demaker от Сентябрь 02, 2016, 12:26
Не возражаю

А как ?


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: Racheengel от Сентябрь 02, 2016, 12:56
Или с помощью QThread можно, там надо метод run() переопределить.


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: Kurles от Сентябрь 02, 2016, 15:26
Я так понял вопрос про QSortFilterProxyModel речь идет. Как то совсем смутно представляю, как это сделать можно.


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: demaker от Сентябрь 02, 2016, 16:00
Или с помощью QThread можно, там надо метод run() переопределить.

Т.е вы предлагайте прокси модель создавать в отдельном и выполнять там сортировку ???


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: demaker от Сентябрь 02, 2016, 16:30
Я так понял вопрос про QSortFilterProxyModel речь идет. Как то совсем смутно представляю, как это сделать можно.

 :-\ да согласен


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: __Heaven__ от Сентябрь 03, 2016, 13:49
Как то совсем смутно представляю, как это сделать можно.
А как насчёт сортировки блоками в потоках? ;)


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: Kurles от Сентябрь 03, 2016, 17:40
Как то совсем смутно представляю, как это сделать можно.
А как насчёт сортировки блоками в потоках? ;)
И как ее прикрутить к QSortFilterProxyModel? Функция bool QSortFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const, отвечающая за алгоритм сортировки, вызывается вьюхой в потоке, в котором живет GUI. То же самое и к  filterAcceptsRow(...) относится. Если я не прав, пните в нужном направлении =)


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: demaker от Сентябрь 03, 2016, 18:51
Как то совсем смутно представляю, как это сделать можно.
А как насчёт сортировки блоками в потоках? ;)
И как ее прикрутить к QSortFilterProxyModel? Функция bool QSortFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const, отвечающая за алгоритм сортировки, вызывается вьюхой в потоке, в котором живет GUI. То же самое и к  filterAcceptsRow(...) относится. Если я не прав, пните в нужном направлении =)

Я так понимаю что при использовании проксимодели сортировку или фильтрацию не реально вынести в отдельный поток.


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: Bepec от Сентябрь 03, 2016, 19:15
Насколько я помню, всё общение с model сделано через сигнал слоты. Насчет прокси не уверен - я им не пользовался.


Название: Re: фильтрация и сортировка в отдельном потоке
Отправлено: __Heaven__ от Сентябрь 05, 2016, 17:18
И как ее прикрутить к QSortFilterProxyModel? Функция bool QSortFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const, отвечающая за алгоритм сортировки, вызывается вьюхой в потоке, в котором живет GUI. То же самое и к  filterAcceptsRow(...) относится. Если я не прав, пните в нужном направлении =)

Метод sort виртуальный. Судя по документации, можно его переопределить и дёргать вручную.