Я пытаюсь реализовать таблицу, сортируемую в нескольких столбцах. QS QSortFilterProxyModel поддерживает только сортировку по одному столбцу (по крайней мере, в Qt 4.6.2).QSortFilterProxyModel сортировать несколько столбцов
Я нашел this solution от dimkanovikov на github, но ему не хватает динамического обновления на добавленные строки. Я имею в виду, что модель изменена, и beginInsertRows(), beginRemoveRows(), их соответствующие end ..- методы и сигналы dataChanged() испускаются. В идеале я хотел бы обновлять только эти строки, но модель должна хотя бы реагировать на такие изменения.
На сайте Qt есть другой раздел вопросов, который сортирует QTableWidget, но ему также не хватает динамического обновления.
Я новичок в Qt, и я хотел бы получить несколько указателей на то, как я должен это делать.
В качестве примечания: если вы сортируете столбец B, а затем столбец A, все строки с тем же значением в A должны быть отсортированы по B. Такой тип позволяет провести обратную сортировку, т.е. если вы хотите сортировать для A, тогда B, то C, вы должны фактически сортировать таблицу с помощью C, затем B, затем A –
. Обратное сортирование может работать быстрее, чем решение, с которым я пошел, но тогда вам придется переопределить '' void QAbstractItemModel :: sort (int column , Qt :: SortOrder order = Qt :: AscendingOrder) и, вероятно, сложнее реализовать то, что я сделал. – kossmoboleat
То, что я описал, не требует дополнительной реализации, это поведение по умолчанию Qt. Это просто, если вы нажмете столбец B, тогда столбец A в стандартном QTableView (разрешенная сортировка включена для этих столбцов), и есть строки, которые имеют то же значение A, но разные значения B, эти значения B также будут отсортированы. Ваше собственное решение, вероятно, будет лучше для вашего дела, хотя –