[Interest] Sorting QSortFilterProxyModel with QML

André Somers andre at familiesomers.nl
Tue May 26 12:35:33 CEST 2015


I ended up writing my own class that I export to QML for this. It 
subclasses QSortFilterProxyModel and exposes a nice QML-friendly API for 
doing filtering and sorting.

André


Mathias Baumann schreef op 22-5-2015 om 18:16:
> Hello,
>
> I am using a QSortFilterProxyModel with QML. I with it from my c++ code
> by doing for example:
>
>      sf_server_model.setSourceModel(&server_model);
>      sf_server_model.setDynamicSortFilter(true);
>      sf_server_model.setSortRole(ServerModel::Ping);
>      sf_server_model.sort(0);
>
> However, it becomes more difficult if I want to do sorting from QML,
> specifically from a TableView.
>
> I am using the headerDelegate property to have my own table header.
>
> I thought I could have some kind of MouseArea in there that reacts on
> click and calls some Q_INVOKABLE function on the model that I
> previously defined giving it the role or role-id as parameter.
>
> But in the headerDelegate I have no model.role available. The only
> thing I really have in there that would help me to identify which
> role/column I am currently in is styleData.value which is the literal
> string that appears in the header, thus subject to localization (thus
> not exactly ones first choice to use as check in your code).
>
> I do have the column number to (styleData.column) too, but that column
> is completely separate from the thing that QSortFilterProxyModel
> understands as column (if I understood that right).
>
> The styleData.column seems to change based on how I arrange my columns
> in QML, so I am rather sure it's separate, thus also no big help.
>
> I could hard-code the column numbers I use in the QML and manual map
> them to the actual role, but that seems rather dirty and is likely to
> break with every change to the column order or addition of columns.
>
> So my question is: What is the best way to get sorting of a TableView
> using a QSortFilterProxyModel when clicking on the according column
> headers?
>
> cheers
>
>      --Marenz
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest




More information about the Interest mailing list