Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-37983

QSortFilterProxyModel::sort() always ends up in modelReset() which hits performance badly

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Not Evaluated
    • 5.3.1
    • 5.2.1
    • Widgets: Itemviews
    • None
    • a0aefe111758b2267f1bf5fbb26991cbc6dd804d

    Description

      Since change-id I16b859d92fdb1823c4a56c297d4451abe438fbb1 there is no difference between layoutChanged() and modelReset() any more. This results in layoutChanged being much slower than before and also impacts operations that used layoutChanged() implicitly.

      E.g. emitting dataChanged() on a single item in the model, causes the attached proxy model to call sort(), which in turn ends up calling modelReset(). This means, every time a single item emits dataChanged() the complete ListView delegates are destroyed and recreated. This hits performance really badly and makes it mostly unusable on low end hardware such as mobile phones.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            dvratil Daniel Vrátil
            mzanetti Michael Zanetti
            Votes:
            1 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes