На этом шаге рассмотрим сортировку элементов виджета класса QTreeWidget.
Элементы списка можно упорядочить вызовом метода sortItems(), в который передаются значения для сортировки в убывающем или возрастающем порядке.
Для сортировки по датам и числовым значениям необходимо унаследовать класс QTreeWidgetItem и перезаписать в нем operator<(). Его перезапись может выглядеть так:
bool MyTreeWidgetItem::operator<(const QTreeWidgetItem& ptwiOther) { bool bRet = false; int nColumn = treeWidget()->sortColumn(); if (nColumn == 0) { QString strFormat = "dd.MM.yyyy"; bRet = QDate::fromString(text(nColumn)) < QDate::fromString(ptwi.text(nColumn)); } return bRet; }
Первым столбцом (столбец с индексом 0) будет столбец с датами. Вызовом метода sortColumn() мы запрашиваем индекс, по которому пользователь осуществляет сортировку, этот метод вызывается из виджета иерархического списка QTreeWidget. Если индекс равен 0, то мы переводим строку с датой к типу QDate и сравниваем значения дат текущего элемента с другим. После чего возвращаем результат (переменная bRet).
На следующем шаге рассмотрим класс QTableWidget.