2016-07-20 8 views
1

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

Я включил dynamicSort, чтобы убедиться, что мой взгляд остается отсортирован, даже когда я загрузить модель или добавить строки (я проверил, что либо modelReset() или rowsInserted() испускаются должным образом на моей модели).

Но по каким-то причинам мои строки не сортируются.

Есть ли что-то конкретное, чтобы включить динамическую сортировку?

Это только не то, что setDynamicSortFilter вообще делает?

Есть ли способ ручного вызова сортировки при испускании этих сигналов? (Каждый раз, когда я пытаюсь сделать это, я получаю только недопустимые варианты от модели data(), судя по данным источника, сигнал испускается перед QSortFilterProxyModel закончит настройки вещи снова)

Во всяком случае, любая помощь приветствуется попробовать выясняя, как это должно работать, спасибо.

ответ

0

dynamicSortFilter Из документации:

Обратите внимание, что вы не должны обновить модель источника через прокси-модели, когда dynamicSortFilter верно. Например, если вы установите прокси-модель на QComboBox, то с использованием функций, которые обновляют модель, например, addItem(), не будет работать должным образом. Альтернативой является установка dynamicSortFilter на false и сортировку вызовов() после добавления элементов в QComboBox.

Есть ли способ ручного вызова сортировки при испускании этих сигналов? (каждый раз, когда я пытаюсь это сделать, я получаю только недопустимые варианты из данных модели(), судя по источнику, сигнал испускается до того, как QSortFilterProxyModel закончил настройку снова)

Я думаю, что если вы будете установите dynamicSortFilter на номер false, тогда ваши обращения к телефону sort не будут (плохо) перехватываться с внутренними обновлениями QSortFilterProxyModel. По крайней мере, я могу сказать вам, что это то, что я делаю в подобном сценарии, и это работает для меня хорошо.

+0

Дело в том, что я не изменяю его через прокси-модель, но, как и вы, вы называете 'appendRow' на' QStandardItemModel', поэтому он должен работать теоретически. Может быть, что-то не так с моей исходной моделью ... В противном случае, когда я пытаюсь вручную сортировать по различным сигналам после модификации, все QVariants возвращаемых 'данных()' являются недействительными по какой-то причине ... –

Смежные вопросы