2010-04-05 11 views
6

मैं उस डेटा का उपयोग करने के लिए तालिका में डाले गए प्रत्येक QTableWidgetItem के साथ अतिरिक्त डेटा को जोड़ना चाहता हूं, जब इसे किसी तालिका आइटम पर क्लिक किया जा रहा हो। लेकिन वह डेटा दिखाई नहीं देना चाहिए। मैं उसे कैसे कर सकता हूँ?क्यूटी - QTableWidgetItem के साथ डेटा कैसे संबद्ध करें?

+1

यह क्यूटी के खिलाफ मेरी सबसे बड़ी शिकायतों में से एक है। मुझे अभी तक कुछ महीनों में इसका पता चल रहा है, .NET में बाध्यकारी डेटा के समान एक सरल तंत्र। –

+0

सभी क्यूटी के आइटम डिस्प्ले क्लासेस (पेड़, टेबल, सूचियां) मॉडल/व्यू पर आधारित हैं, बैकएंड मॉडल को अपनी पसंद के किसी भी चीज़ को बनाना आसान है। LINQ के साथ आपके पास SQL ​​के लिए एक क्लिक लिंक नहीं है लेकिन यह अधिक लचीला है। –

+1

@ मार्टिन मैं इसे "व्यवहार्य" कहता हूं, "आसान" नहीं ... हालांकि मुझे लगता है कि प्रस्तुति के लिए सीधे डेटा को रखने से बेहतर है। –

उत्तर

20

तुम इतनी तरह QTableWidgetItem::setData() उपयोग कर सकते हैं:

setData(Qt::UserRole, myData); // set 

कहाँ myData एक समर्थित QVariant प्रकार है। आपके द्वारा संग्रहीत मूल्य को पुनर्प्राप्त करने के लिए आप QTableWidgetItem::data() का उपयोग कर सकते हैं।

आप एक से अधिक की जरूरत है आप Qt::UserRole + 1, 2, और इतने पर (Qt::UserRole "पहली भूमिका है कि आवेदन विशेष उद्देश्यों के लिए इस्तेमाल किया जा सकता है।" का उपयोग कर सकते है, तो आप अन्य प्रकार के बारे में अधिक पढ़ सकते हैं भूमिकाओं here)।

यदि आप एक कस्टम प्रकार संग्रहीत कर रहे हैं जो QVariant द्वारा मूल रूप से समर्थित नहीं है तो आपको Qt मेटा-ऑब्जेक्ट सिस्टम के साथ अपना प्रकार पंजीकृत करना होगा। उस पर अधिक जानकारी के लिए QMetaType पर देखें।

आप उदाहरण के लिए, एक पूर्णांक स्टोर करने के लिए करना चाहता था, तो:

QTableWidgetItem* widgetItem = tableWidget->item(row, col); // get the item at row, col 
int myInteger = 42; 
widgetItem->setData(Qt::UserRole, myInteger); 
// ... 
myInteger = widgetItem->data(Qt::UserRole); 
+1

बेहतर उत्तर! –

+0

मैं setData() फ़ंक्शन के साथ तालिका आइटम में एक पूर्णांक कैसे जोड़ सकता हूं? क्या मुझे निम्नलिखित करना चाहिए: item.setData (Qt :: UserRole, myInteger)? – Narek

+0

मैंने उदाहरण को और स्पष्ट होने के लिए बदल दिया, उम्मीद है कि यह मदद करता है। – richardwb

5

आप QTableItem से निकाले जाते हैं सकता है और अपने खुद के डेटा सदस्य प्रदान करते हैं या आप अपने स्वयं के मॉडल के साथ QTableView इस्तेमाल कर सकते हैं।

+1

मेरे अनुभव से यह सेटडाटा डेटा क्यूटी फ़ंक्शन – drahnr

+1

से अधिक लचीला है हां लेकिन रिचर्ड का उत्तर शायद शुरुआत के लिए आसान है - या यदि आप बस कुछ एमएफसी कोड का अनुवाद करने की कोशिश कर रहे हैं –

संबंधित मुद्दे