У меня есть QListView и QTableView, которые совместно используют подкласс QSortFilterProxyModel поверх пользовательской исходной модели. Сортировка включена в QTableView, как разделить один и тот же результат сортировки между двумя представлениями?
Должен ли я переопределять функцию sort() или lessThan() модели QSortFilterProxyModel? Если да, то как мне их реализовать?
В настоящее время это мой код, и он не работает:
MyModel *model = new QMyModel();
MySortFilterModel *proxy_model = new MySortFilterModel();
proxy_model->setSourceModel(model);
proxy_model->setDynamicSortFilter(true);
QListView *list = new QListView();
list->setModel(proxy_model);
QTableView *table = new QTableView();
table->setModel(proxy_model);
table->setSortingEnabled(true);
Я также пробовал следующее:
QHeaderView *header = table->horizontalHeader();
header->setSortIndicator(0, Qt::AscendingOrder);
header->setSortIndicatorShown(true);
header->setSectionsClickable(true);
connect(header,SIGNAL(sectionClicked(int)),table,SLOT(sortByColumn(int)));
Но когда я сортирую таблицу, щелкая заголовок, таблица обновляется, но не список, причем оба представления имеют разные элементы в разных строках.
Я хотел бы получить такой результат, что когда пользователь щелкает горизонтальный заголовок QTableView, данные элемента сортируются, в то время как те же данные элемента, которые совместно используются в QListView, также сортируются.