Для сортировки по нужным вам критериям необходимо переопределить оператор сравнения у 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;
}