나는 qtreewidget
과 toplevelitems
을가집니다. 각각 toplevelitem
은 4 childeren
이며, 각 어린이는 특별한 가치가 있습니다. 모든 toplevelitems의 첫 번째 자녀는 그 비열한 비용입니다. sort
이 toplevelitems
이 비용을 기본으로하고 싶지만, 어떻게 해야할지 모르겠습니까? 내 생각은 toplevelitem
가 추가 될 때마다 toplevelitems
과 비용을 map
및 add
및 take
으로 유지하는 것이지만 더 나은 방법을 찾고 있습니다. 사전에 감사합니다. sort qtreewidget 상위 항목 하위 데이터의 항목 기본
1
A
답변
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();