我有一个自定义小部件 (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)
添加回答
举报
0/150
提交
取消