¿Clasificar y filtrar un modelo C ++ a través de functors QML?

Tengo un polimórfico (como en roles arbitrarios)QObject modelo que se crea principalmente de manera declarativa a partir de QML, como en esta respuesta, y me gustaría poder tener "vistas" de datos personalizados que clasifiquen y filtren el modelo a través de arbitrarias, y potencialmente, tiempo de ejecución generado a partir de los functores JS de cadenas de código, algo así:

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

LosQSortFilterProxyModela interfaz @ no parece ser particularmente adecuada para la tarea, sino que se fija en roles estáticos y reglas precompiladas.

Intenté usarQJSValue propiedades en el lado de C ++, pero parece que no es posible, el código de C ++ simplemente no se compila con ese tipo de propiedad. Y si configuro el tipo de propiedad enQVariant Recibo mensajes de error de QML que indican que las funciones solo pueden vincularse avar propiedades. Evidentemente,var aQVariant la conversión no entra aquí como lo hace para los valores de retorno.

Respuestas a la pregunta(2)

Su respuesta a la pregunta