Это облегчает метаморфическую модель данных, в которой данные элементов модели реализуются через свойства QML, поэтому ни один из механизмов фильтрации ролей или регулярных выражений здесь не применим, но в то же время это дает универсальность в использовании единого механизма для реализации сортировки и фильтрации. основанный на любых критериях и данных произвольного элемента, и производительность очень хорошая, несмотря на мои первоначальные опасения Он не реализует порядок сортировки, который легко достижим, просто перевернув результат выражения сравнения.

я полиморфный (как в произвольных ролях)QObject модель, которая в основном создается декларативно из QML,как в этом ответеи я хотел бы иметь возможность иметь пользовательские «представления» данных, которые сортируют и фильтруют модель через произвольные и, возможно, - среды выполнения, сгенерированные из строк кода JS-функторов, что-то вроде этого:

  DataView {
    sourceModel: model
    filter: function(o) { return o.size > 3 }
    sort: function(a, b) { return a.size > b.size }
  }

QSortFilterProxyModel интерфейс, кажется, не особенно подходит для этой задачи, вместо этого он зациклен на статических ролях и предварительно скомпилированных правилах.

Я пытался с помощьюQJSValue свойства на стороне C ++, но кажется, что это невозможно, код C ++ просто не компилируется с этим типом свойства. И если я установлю тип свойстваQVariant Я получаю сообщения об ошибках из QML, к которым функции могут быть привязаны толькоvar свойства. Очевидно,var вQVariant здесь не происходит преобразование, как для возвращаемых значений.

Ответы на вопрос(2)

Ваш ответ на вопрос