2013-07-02 92 views
2

我想在數值上對數值進行排序,而不是按字母順序排列在我的QTreeWidget中。現在它是比較兩個字符串,我需要的是它作爲兩個整數進行比較。Sorting QTreeWidget

我到目前爲止有:

mainwindow.h:

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QSql> 
//more include... 
#include <QTreeWidget> 

extern QSqlDatabase db; 
//more extern... 

namespace Ui { 
class mainwindow; 
class TreeWidgetItem; 
} 

class TreeWidgetItem : public QTreeWidgetItem 
{ 
    Q_OBJECT 

public: 
    TreeWidgetItem(QTreeWidget *tree) : QTreeWidgetItem(tree) {} 
    TreeWidgetItem(QTreeWidget * parent, const QStringList & strings) 
        : QTreeWidgetItem (parent,strings) {} 
    bool operator< (const QTreeWidgetItem &other) const 
    { 
     int column = treeWidget()->sortColumn(); 
     return text(column).toInt() < other.text(column).toInt(); 
    } 
}; 

class mainwindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    //... 

,但它不工作,任何想法,我需要做什麼嗎?還是我完全脫落?

+1

[同一問題在這裏](http://stackoverflow.com/questions/363200/is-it-possible-to-sort-numbers-in-a-qtreewidget-column?rq=1)唯一的區別是, 'bool operator <(const ...'在這個被接受的答案中是私有的...... – 2013-07-03 02:00:34

+0

只要它在同一個類中被訪問,它在私有或公共方面就不應該在這方面起作用afaik。 – throwaway2013

+2

可能是你應該看看QSortFilterProxyModel類http://qt-project.org/doc/qt-5.0/qtcore/qsortfilterproxymodel.html。有一個例子說明如何將它用於TreeView小部件。基本上你必須從該類派生並重新實現一些方法。 – bkausbk

回答

0

您是否檢查過函數返回的內容(即查看調試器中的值)?我敢打賭,從不同的角度來看,答案會很明顯。