Classificar e filtrar um modelo C ++ por meio de functores QML?
Eu tenho um polimórfico (como em papéis arbitrários)QObject
modelo que é principalmente instanciado declarativamente a partir da QML,como nesta resposta, e eu gostaria de poder ter "visualizações" personalizadas de dados que classifiquem e filtrem o modelo por meio de tempo de execução arbitrário e potencialmente gerado a partir de functores JS de cadeias de código, algo como:
DataView {
sourceModel: model
filter: function(o) { return o.size > 3 }
sort: function(a, b) { return a.size > b.size }
}
oQSortFilterProxyModel
a interface não parece ser particularmente adequada para a tarefa, sendo fixada em funções estáticas e regras pré-compiladas.
Eu tentei usarQJSValue
propriedades no lado C ++, mas parece que não é possível, o código C ++ simplesmente não é compilado com esse tipo de propriedade. E se eu definir o tipo de propriedade comoQVariant
Recebo da QML mensagens de erro de que funções só podem ser vinculadas avar
propriedades. Evidentemente,var
paraQVariant
a conversão não entra aqui, como ocorre nos valores de retorno.