从我的自定义 QListWidgetItem 获取 QtWidgets

我有一个自定义小部件 (ProjectWidget),它代表我的业务的不同项目,它们显示在 QListWidget 中。我想使用复选框选择某些项目对它们进行分析。

当我单击“分析项目”按钮时,它会调用analyze() 函数,该函数遍历QListWidget 的QListWidgetitems。

我不知道如何访问组成我的自定义小部件的小部件。在我的示例中,我需要检查复选框是否确实被选中,如果是,则从组成我的自定义小部件的其他小部件中获取标签文本。

这是程序的样子:

http://img2.mukewang.com/60dacd430001568b09230827.jpg

相关代码:


#Custom Widget

class 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)


白衣非少年
浏览 677回答 1
1回答

POPMUISE

您必须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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python