2014-10-05 10 views
8

पर QWidget जोड़ें मैं एक QListWidget बनाने की कोशिश कर रहा हूं जिसमें प्रत्येक आइटम एक साधारण विजेट है जिसमें टेक्स्ट और पुशबटन शामिल है। मैं निम्नलिखित का उपयोग करता हूं:QLidWidget

itemN = QtGui.QListWidgetItem() 
#Create widget 
widget = QtGui.QWidget() 
widgetText = QtGui.QLabel("I love PyQt!") 
widgetButton = QtGui.QPushButton("Push Me") 
widgetLayout = QtGui.QHBoxLayout() 
widgetLayout.addWidget(widgetText) 
widgetLayout.addWidget(widgetButton) 
widgetLayout.addStretch() 
widget.setLayout(widgetLayout) 
#Add widget to QListWidget funList 
funList.addItem(itemN) 
funList.setItemWidget(itemN, widget) 

समस्या यह है कि कुछ भी दिखाई नहीं देता है। मुझे एक खाली रेखा मिलती है जिसे मैं अपने कीबोर्ड का उपयोग करके नेविगेट कर सकता हूं, लेकिन यह खाली है। जब विजेट में केवल पुशबटन होता है, तो यह काम करता है, इसलिए ऐसा नहीं है कि केवल पुशबटन अकेले चीजों को गड़बड़ कर रहा है। setItemWidget संभाल सकते हैं कि विजेट की जटिलता पर सीमाएं हैं? शायद मुझे सुविधा कक्षाओं से परे जाने की जरूरत है, जैसा कि नीचे दी गई कुछ संबंधित पदों में सुझाया गया है?

संबंधित पोस्ट

pyqt adding a widget to a QListWidget
नोट पिछले पोस्ट मेरा एक समान शीर्षक है, लेकिन QtDesigner से एक जटिल कोड की मिलावट (कुछ कस्टम सामान के साथ मिश्रित) के बारे में एक अपेक्षाकृत खराब व्यक्त सवाल हो रहा है । यह बिल्कुल स्पष्ट नहीं है कि यह वास्तव में सवाल है कि व्यक्ति से पूछना चाहिए था। जबकि शीर्षक यह एक डुप्लिकेट की तरह प्रतीत होता है, सवाल (मैं प्रार्थना) नहीं है।

मैं कुछ this पोस्ट के समान कुछ कहूंगा।

QListWidgetItem with Radio Button

QListView/QListWidget with custom items and custom item widgets

Adding Custom Widget to QListWidget in QT click issue in QT?

pyqt adding a widget to a QListWidget

http://www.qtcentre.org/threads/8660-Drawing-a-widget-in-QItemDelegate-s-paint-method

http://developer.nokia.com/community/discussion/showthread.php/211634-Adding-a-button-inside-QListWidgetItem

उत्तर

12

इस प्रयास करें:

itemN = QtGui.QListWidgetItem() 
#Create widget 
widget = QtGui.QWidget() 
widgetText = QtGui.QLabel("I love PyQt!") 
widgetButton = QtGui.QPushButton("Push Me") 
widgetLayout = QtGui.QHBoxLayout() 
widgetLayout.addWidget(widgetText) 
widgetLayout.addWidget(widgetButton) 
widgetLayout.addStretch() 

widgetLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) 
widget.setLayout(widgetLayout) 
itemN.setSizeHint(widget.sizeHint())  

#Add widget to QListWidget funList 
funList.addItem(itemN) 
funList.setItemWidget(itemN, widget) 

आप देख सकते हैं, तो आप लेआउट के लिए setSizeConstraint और setSizeHint जरूरत आइटम के लिए।

+0

जो काम करता है! यह मेरे लिए बहुत स्पष्ट नहीं है कि क्या हो रहा है। 1) एक बार आकार की बाधा सेट हो जाने के बाद, क्या मुझे वास्तव में आइटम को 'सेट साइज' सेट करने की ज़रूरत है? यह _seems_ 'setSizeHint' को छोड़कर मेरे जीयूआई की उपस्थिति को नहीं बदलेगा। 2) मेरा आकार पहली बार -1, -1 को डिफ़ॉल्ट क्यों इंगित करता है, और 'SetFixedSize' का उपयोग कैसे करता है इसे ठीक करता है? यह गलत मान (-1, -1) पर इसे ठीक क्यों नहीं करता है। इन मुद्दों के इन-आउट-आउट पर जाने वाले कोई भी अच्छे दस्तावेज़? (डॉक्स में शामिल हैं: http://qt-project.org/doc/qt-4.8/qt.html#SizeHint-enum और http://qt-project.org/doc/qt-4.8/qlayout.html#SizeConstraint- enum) – neuronet

+2

@neuronet 'QLayout :: SetFixedSize' मुख्य विजेट का आकार' sizeHint() पर सेट किया गया है, 'इसका आकार बदला नहीं जा सकता है। यदि आप आकार संकेत सेट नहीं करेंगे, तो लेबल और बटन के साथ आपका विजेट आइटम बड़ा होगा, इसलिए यह बेहद बदसूरत और गलत होगा। – Chernobyl

+0

उत्तर को स्वीकार करने के कारण यह समस्या हल हो गई है, लेकिन निश्चित रूप से किसी भी व्यक्ति को उखाड़ फेंक देगा जो इस के अंदर और बाहर बताती है, अगले व्यक्ति को कार्गो पंथ प्रोग्रामिंग से परे लाने के लिए :) – neuronet