为了账号安全,请及时绑定邮箱和手机立即绑定

从我的自定义 QListWidgetItem 获取 QtWidgets

从我的自定义 QListWidgetItem 获取 QtWidgets

白衣非少年 2021-06-24 18:02:06
我有一个自定义小部件 (ProjectWidget),它代表我的业务的不同项目,它们显示在 QListWidget 中。我想使用复选框选择某些项目对它们进行分析。当我单击“分析项目”按钮时,它会调用analyze() 函数,该函数遍历QListWidget 的QListWidgetitems。我不知道如何访问组成我的自定义小部件的小部件。在我的示例中,我需要检查复选框是否确实被选中,如果是,则从组成我的自定义小部件的其他小部件中获取标签文本。这是程序的样子:相关代码:#Custom Widgetclass ProjectWidget(QWidget):    def __init__(self, parent=None):        super(ProjectWidget, self).__init__(parent)        self.ui = Ui_Form()        self.ui.setupUi(self)    def addDetails(self, project):        self.ui.projectNumber.setText(project.projectNumber)        self.ui.projectDescription.setText(project.description)        self.ui.closingDate.setText(project.closingDate)class AppWindow(QMainWindow):    def __init__(self):        super().__init__()        self.ui = Ui_MainWindow()        self.ui.setupUi(self)        self.show()    def loadProjects(self):        self.ui.listWidget.clear()        print("loading projects")        projects = WCA.getCurrentProjects(session)        #Add custom widget to listwidget        for x in range(len(projects)):             #I create an Item*            Item = QListWidgetItem(self.ui.listWidget)            #I create a custom widget*            Item_Widget = ProjectWidget()            Item_Widget.addDetails(projects[x])            #I set the Size from the Item to the same of the widget*            Item.setSizeHint(Item_Widget.size())            self.ui.listWidget.addItem(Item)            self.ui.listWidget.setItemWidget(Item, Item_Widget)        print(str(len(projects)) + " Projects loaded.")    def analyze(self):        print("Analyze projects")        #Check if more than one project is selected        for i in range(self.ui.listWidget.count()):            item = self.ui.listWidget.item(i)            #Check if the custom widget's checkbox is checked            print(item)
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

您必须itemWidget()通过传递来使用该方法QListWidgetItem来获取小部件:


def analyze(self):

    print("Analyze projects")

    #Check if more than one project is selected

    for i in range(self.ui.listWidget.count()):

        item = self.ui.listWidget.item(i)

        widget = self.ui.listWidget.itemWidget(item)

        if widget is not None:

            if widget.ui.name_of_checkbox.isChecked():

                print(widget)


查看完整回答
反对 回复 2021-06-29
  • 1 回答
  • 0 关注
  • 676 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号