На этом шаге рассмотрим сортировку элементов виджета класса 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.