我用Qt Designer制作了两个.ui文件,一个是我的应用程序的主窗口,第二个是我制作的自定义小部件。我的想法是用这个自定义小部件在我的主应用程序上填充一个 listWidget 来显示数据。
我编写了这段代码,编译没有问题,但它在运行时没有在列表中显示 customWidget
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QWidget, QAction, QTabWidget,QVBoxLayout,QDialog
from PyQt5 import QtCore, QtGui, QtWidgets
from mainwindowReclamo import Ui_MainWindow
from widgetReclamos import Ui_Form
#Custom Widget*
class WidgetReclamo(QWidget, Ui_Form):
"""docstring for ClassName"""
def __init__(self,*args,**kwargs):
QWidget.__init__(self,*args,**kwargs)
self.setupUi(self)
print("I am Alive")
#My Main Program*
class ProgramaReclamos(QMainWindow, Ui_MainWindow):
def __init__(self,*args,**kwargs):
QMainWindow.__init__(self,*args,**kwargs)
self.setupUi(self)
#I create an Item*
Item = QtWidgets.QListWidgetItem(self.listWidget)
#I create a custom widget*
Item_Widget = WidgetReclamo()
#I set the Size from the Item to the same of the widget*
Item.setSizeHint(Item_Widget.sizeHint())
#I add it to the list*
self.listWidget.addItem(Item)
self.listWidget.setItemWidget(Item, Item_Widget)
if __name__ == '__main__':
app = QApplication(sys.argv)
prog = ProgramaReclamos()
prog.show()
sys.exit(app.exec_())
我在网上看到一些问题,他们的答案是针对 PyQt4 的,他们说了一些关于为小部件使用布局的内容,但我不明白是否必须制作一个,因为小部件是在 .ui 文件中制作的
正如 EYLLANESC 在评论中所说:
将 Item.setSizeHint(Item_Widget.sizeHint()) 更改为 Item.setSizeHint(Item_Widget.size()) – eyllanesc
谢谢!