2014-10-05 27 views
8

Her öğenin metin ve düğme içeren basit bir pencere öğesi olduğu bir QListWidget'ı yapmaya çalışıyorum. Aşağıdakileri kullanıyorum: Sorun şu ki, hiçbir şey gösterilmiyor. Klavyemi kullanarak gidebileceğim boş bir satır alıyorum, ancak boş. Widget, bir butona sadece içeriyorsa, işe yarar, bu yüzden buton sadece işleri karıştırıyormuş gibi değil. setItemWidget'un ele alabileceği widget'ların karmaşıklığı konusunda sınırlar var mı? Aşağıdaki ilgili yazılardan bazılarında önerildiği gibi, belki de kolaylık sınıflarının ötesine geçmem gerekiyor mu?QListWidget'e QWidget ekle

İlgili mesajlar

pyqt adding a widget to a QListWidget
Not önceki sonrası mayın benzer bir başlık vardır, ama (bazı özel şeyler ile karışık) QtDesigner kod karmaşık pastiş hakkında nispeten zayıf dile soru gibi görünüyor . Bu, aslında kişinin sorması gereken soru olduğu hiç de net değildir. Başlık bir kopya gibi görünüyor olsa da, (dua ediyorum) soru değil.

this gönderi hakkında benzer bir şey söyleyebilirim.

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

cevap

12

bu deneyin: Gördüğünüz gibi

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) 

, öğenin düzenine setSizeConstraint ve setSizeHint gerekir.

+0

işe yaradı! Bana ne olduğu çok açık değil. 1) Boyut kısıtlaması ayarlandıktan sonra, gerçekten 'setSizeHint' öğesine de öğeye ihtiyacım var mı? Bu setSizeHint'in çıkması _seems_ GUI'imin görünümünü değiştirmiyor. 2) Boyutum neden ilk etapta -1, -1 değerine ulaştı ve 'SetFixedSize' kullanmak bunu nasıl düzeltir? Neden sadece yanlış değerde değil (-1, -1). Bu sorunların çözümünde iyi dokümanlar var mı? (Dokümanlar şunları içerir: http://qt-project.org/doc/qt-4.8/qt.html#SizeHint-enum ve http://qt-project.org/doc/qt-4.8/qlayout.html#SizeConstraint- enum) – neuronet

+2

@neuronet 'QLayout :: SetFixedSize' Ana widget'in boyutu 'sizeHint() olarak ayarlandı,' yeniden boyutlandırılamaz. Boyut ipucu ayarlamadıysanız, widget ve etiketli widget'ınız daha büyük olacaktır, bu yüzden çok çirkin ve doğru olmayacaktır. – Chernobyl

+0

Problemi çözdüğü için cevabı kabul ediyorum, ancak kesinlikle yük kronolojisi programlamasının ötesinde bir sonraki kişiyi getirmek için, bunun iç-dış-çıkışlarını açıklayan herkesi kesinlikle yenecek :) – neuronet