将自定义小部件添加到 pyqt5 上的列表小部件

问题描述 投票:0回答:1

我用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 文件中制作的

python python-3.x pyqt pyqt5
1个回答
1
投票

正如 EYLLANESC 在评论中所说:

将 Item.setSizeHint(Item_Widget.sizeHint()) 更改为 Item.setSizeHint(Item_Widget.size()) – eyllanesc

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.