2009-07-02 41 views
7

我有一個QTreeWidget與幾列,我加QTreeWidgetItems它。我儘量讓第二列包含每個Item數值,所以我可以通過這個值QTreeWidgetItem中的角色是什麼?

QTreeWidgetItem has a method called setData(int column, int role, QVariant(data)) 

我無法找到這個role說法就是任何文件的項目進行排序。我所知道的是,如果將其設置爲1或2,那麼列中會顯示某些內容,如果將其設置爲0或> = 3,則列中不顯示任何內容,無論數字總是按照字母順序排序,這是錯誤的。

回答

8

你可以使用Qt :: UserRole來實現應用程序的特定目的。 由於此數據是QVariant,因此您可以創建QList以設置多個數據,然後將其轉換爲QVariant並設置數據。

下面是一個例子:

QTreeWidgetItem* item = new QTreeWidgetItem(); 
QList<QVariant> dataList; 
dataList.append("data 1"); 
dataList.append("data 2"); 
QVariant data(dataList); 
item->setData(0, Qt::UserRole, data); 
+0

你不限於Qt的:UserRole的 - 它只是你可以使用你的目的的第一個。您可以輕鬆存儲多個值,而無需創建新的數據類型。 – pi3 2014-12-11 17:09:09

6

相關文件可在Qt::ItemDataRole(通過QAbstractItemModel::setData找到)中找到。角色用於指定應該傳遞的數據。您可以使用不同的角色來設置項目的工具提示,字體或顏色等。

4

注意item->text()是一個方便相當於item->data(Qt::DisplayRole).toString()