2014-05-21 23 views
1

나는 qtreewidgettoplevelitems을가집니다. 각각 toplevelitem은 4 childeren이며, 각 어린이는 특별한 가치가 있습니다. 모든 toplevelitems의 첫 번째 자녀는 그 비열한 비용입니다. sorttoplevelitems이 비용을 기본으로하고 싶지만, 어떻게 해야할지 모르겠습니까? 내 생각은 toplevelitem가 추가 될 때마다 toplevelitems과 비용을 mapaddtake으로 유지하는 것이지만 더 나은 방법을 찾고 있습니다. 사전에 감사합니다. sort qtreewidget 상위 항목 하위 데이터의 항목 기본

답변

1

기본적으로 트리 위젯은 텍스트에 따라 항목을 정렬하지만 QTreeWidgetItem의 연산자 <()을 재정 의하여 변경할 수 있습니다. 다음은 특정 운영자와 사용자 정의 QTreeWidgetItem의 예 (주석 참조) : 여기

class TreeWidgetItem : public QTreeWidgetItem 
{ 
public: 
    // The constructors. Add more, if needed. 
    TreeWidgetItem(QTreeWidget *parent, const QStringList &strings, 
        int type = Type) 
     : QTreeWidgetItem(parent, strings, type) 
    {} 

    TreeWidgetItem(QTreeWidgetItem *parent, const QStringList &strings, 
        int type = Type) 
     : QTreeWidgetItem(parent, strings, type) 
    {} 

    // Compares two tree widget items. The logic can be changed. 
    bool operator<(const QTreeWidgetItem& other) const 
    { 
     // Get the price - the first child node 
     int price1 = 0; 
     if (childCount() > 0) 
     { 
      QTreeWidgetItem *firstChild = child(0); 
      price1 = firstChild->text(0).toInt(); 
     } 

     // Get the second price - the first child node 
     int price2 = 0; 
     if (other.childCount() > 0) 
     { 
      QTreeWidgetItem *firstChild = other.child(0); 
      price2 = firstChild->text(0).toInt(); 
     } 
     // Compare two prices. 
     return price1 < price2; 
    } 
}; 

을 그리고이 클래스는 QTreeWidget 함께 사용할 수있는 방법입니다

// The sortable tree widget. 
QTreeWidget tw; 
tw.setSortingEnabled(true); 
QTreeWidgetItem *item1 = new TreeWidgetItem(&tw, QStringList() << "Item1"); 
QTreeWidgetItem *child1 = new TreeWidgetItem(item1, QStringList() << "10"); 

QTreeWidgetItem *item2 = new TreeWidgetItem(&tw, QStringList() << "Item2"); 
QTreeWidgetItem *child2 = new TreeWidgetItem(item2, QStringList() << "11");  
tw.show();