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 *)))
मैं के रूप में आप ने सुझाव दिया है कि ठीक काम करता है एक ही दृष्टिकोण का पालन किया लेकिन उसके बाद जब मैं सूची यह डबल क्लिक पर निकाल दिया जाता पर itemclicked घटना उपयोग करें, यह सिंगल क्लिक पर काम करना चाहिए। – user662285
आप 'itemClicked' सिग्नल को कैसे संभालेंगे? कुछ कोड सहायक होंगे – pnezis
उपरोक्त मेरी संपादित पोस्ट देखें। – user662285