Для сортировки по нужным вам критериям необходимо переопределить оператор сравнения у QTreeWidgetItem. Соответственно все добавляемые в QTreeWidget итемы должны быть вашего типа, иначе возможны неприятные последствия.
Ну и собственно код для примера (Сортировка COM портов ):
Ну и собственно код для примера (Сортировка COM портов ):
bool operator< ( const QTreeWidgetItem & other ) const { QString textThis = this->text(1); QString textOther = other.text(1); if (textThis.contains("COM", Qt::CaseInsensitive) || textOther.contains("COM", Qt::CaseInsensitive)) { textOther = textOther.replace("COM", "", Qt::CaseInsensitive); textThis = textThis.replace("COM", "", Qt::CaseInsensitive); } if (textThis.toInt() < textOther.toInt()) return true; else return false; }