2014-10-05 166 views
8

我想要製作一個QListWidget,其中每個項目都是一個包含文本和按鈕的簡單小部件。我使用以下內容:將QWidget添加到QListWidget

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)一旦設置了大小約束,我是否真的需要''setSizeHint'這個項目呢?它_seems_遺漏'setSizeHint'不會改變我的GUI的外觀。 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-枚舉) – neuronet 2014-10-05 14:35:08

+2

@neuronet'QLayout :: SetFixedSize'主窗口部件的大小被設置爲'sizeHint();'它根本無法調整大小。如果你不設置大小提示,那麼你的帶有標籤和按鈕的小部件會比物品大,所以它會非常難看,不正確。 – Chernobyl 2014-10-05 14:43:22

+0

接受答案,因爲它解決了問題,但肯定會讓任何解釋這件事的人都滿意,讓下一個人超越貨物崇拜編程:) – neuronet 2014-10-05 17:28:06