2011-11-08 16 views
7

क्यूटी में रन टाइम पर QListWidget में 2 छवियां और टेक्स्ट कैसे जोड़ें? मैं सूची की शुरुआत में एक छवि रखना चाहता हूं और अंत में एक टेक्स्ट और टेक्स्ट मेरी पहली छवि के तुरंत बाद होना चाहिए।QListWidget क्यूटी में कस्टम आइटम जोड़ें?

itemclicked घटना

connect(list, SIGNAL(itemClicked()), this, SLOT(clicked(QListWidgetItem *))); 
void MyWidget::clicked(QListWidgetItem *item) 
{ 
    //code 

} 

उत्तर

10

setItemWidget समारोह पर एक नज़र डालें। आप एक विजेट डिज़ाइन कर सकते हैं (इसे MyListItemWidget पर कॉल करें) जिसमें दो आइकन लेबल और टेक्स्ट लेबल शामिल है, और इसके कन्स्ट्रक्टर में दो आइकन और टेक्स्ट प्रदान करते हैं। फिर आप इसे अपने QListWidget में जोड़ सकते हैं। नमूना कोड इस प्रकार है:

QIcon icon1, icon2; // Load them 
MyListItemWidget *myListItem = new MyListItemWidget(icon1, icon2, "Text between icons"); 
QListWidgetItem *item = new QListWidgetItem(); 
ui->listWidget->addItem(item); 
ui->listWidget->setItemWidget(item, myListItem); 

तुम भी QListView और QItemDelegate जो डिजाइन और कस्टम सूची आइटम प्रदर्शित करने के लिए सबसे अच्छा विकल्प है पर एक नज़र रखना चाहिए।

संपादित अपने कनेक्शन

के विषय में किसी स्लॉट उनके हस्ताक्षर से मेल खाना चाहिए के लिए एक संकेत जोड़ने। इसका मतलब है कि एक स्लॉट में सिग्नल की तुलना में अधिक पैरामीटर नहीं हो सकते हैं। signals-slots documentation

से संकेत और स्लॉट तंत्र सुरक्षित टाइप है: एक संकेत के हस्ताक्षर प्राप्त स्लॉट के हस्ताक्षर से मेल खाना चाहिए। (वास्तव में एक स्लॉट संकेत यह प्राप्त करता है, क्योंकि यह अतिरिक्त तर्क की उपेक्षा कर सकते से कोई छोटा हस्ताक्षर हो सकता है।)

इसका मतलब यह है कि आपके संकेत सिलसिले में QListWidgetItem * तर्क होना आवश्यक है।

connect(list, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(clicked(QListWidgetItem *))) 
+0

मैं के रूप में आप ने सुझाव दिया है कि ठीक काम करता है एक ही दृष्टिकोण का पालन किया लेकिन उसके बाद जब मैं सूची यह डबल क्लिक पर निकाल दिया जाता पर itemclicked घटना उपयोग करें, यह सिंगल क्लिक पर काम करना चाहिए। – user662285

+0

आप 'itemClicked' सिग्नल को कैसे संभालेंगे? कुछ कोड सहायक होंगे – pnezis

+0

उपरोक्त मेरी संपादित पोस्ट देखें। – user662285

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