Шаг 83.
Библиотека Qt.
Класс QTreeWidget. Сортировка элементов

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




Предыдущий шаг Содержание Следующий шаг