понедельник, 18 ноября 2013 г.

Сортировка QTreeWidget

Для сортировки по нужным вам критериям необходимо переопределить оператор сравнения у QTreeWidgetItem. Соответственно все добавляемые в QTreeWidget итемы должны быть вашего типа, иначе возможны неприятные последствия.

Ну и собственно код для примера (Сортировка 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;
}