2009-07-02 14 views
7

मेरे पास कई कॉलम के साथ QTreeWidget है, मैं इसमें QTreeWidgetItems जोड़ता हूं। मैं दूसरे स्तंभ तो मैं यह मानQTreeWidgetItem में कोई भूमिका क्या है?

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

मैं क्या इस role तर्क है पर किसी भी प्रलेखन नहीं मिल सकता है द्वारा आइटम सॉर्ट कर सकते हैं प्रत्येक Item के लिए एक संख्यात्मक मान बनाने के लिए प्रयास करें। मुझे पता है कि अगर मैं इसे 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

करने के लिए एक सुविधा बराबर आप क्यूटी तक ही सीमित नहीं रहे हैं: UserRole - यह सिर्फ पहले एक है कि आप अपने उद्देश्यों के लिए उपयोग कर सकते हैं। आप एक नए डेटा प्रकार का आविष्कार करने की आवश्यकता के बिना आसानी से एकाधिक मानों को स्टोर कर सकते हैं। – pi3

6

प्रासंगिक दस्तावेज Qt::ItemDataRole के तहत पाया जा सकता है (QAbstractItemModel::setData के माध्यम से मिला)। भूमिकाओं का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि आप जिस डेटा को पास कर रहे हैं उसका उपयोग किया जाना चाहिए। आप अन्य चीजों के साथ किसी आइटम के टूलटिप, फ़ॉन्ट या रंग को सेट करने के लिए विभिन्न भूमिकाओं का उपयोग कर सकते हैं।

4

ध्यान दें कि item->text()item->data(Qt::DisplayRole).toString()