¿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 }
}
LosQSortFilterProxyModel
a 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.