我有一個自定義小部件 (ProjectWidget),它代表我的業(yè)務(wù)的不同項目,它們顯示在 QListWidget 中。我想使用復(fù)選框選擇某些項目對它們進行分析。當我單擊“分析項目”按鈕時,它會調(diào)用analyze() 函數(shù),該函數(shù)遍歷QListWidget 的QListWidgetitems。我不知道如何訪問組成我的自定義小部件的小部件。在我的示例中,我需要檢查復(fù)選框是否確實被選中,如果是,則從組成我的自定義小部件的其他小部件中獲取標簽文本。這是程序的樣子:相關(guān)代碼:#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條經(jīng)驗 獲得超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
提交
取消