从我的自定义 QListWidgetItem 获取 QtWidgets
Getting QtWidgets from my custom QListWidgetItem
我有一个自定义小部件 (ProjectWidget),代表我的业务的不同项目,它们显示在 QListWidget 中。我想 select 某些项目使用复选框对它们进行分析。
当我单击 Analyze Projects 按钮时,它会调用 analyze() 函数,该函数循环访问 QListWidget 的 QListWidgetitems。
我不知道如何访问组成我的自定义小部件的小部件。在我的示例中,我需要检查复选框是否实际上已选中,如果是,则从构成我的自定义小部件的其他小部件获取标签文本。
程序如下所示:
相关代码:
#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)
您必须通过传递 QListWidgetItem
使用 itemWidget()
方法来获取小部件:
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)
我有一个自定义小部件 (ProjectWidget),代表我的业务的不同项目,它们显示在 QListWidget 中。我想 select 某些项目使用复选框对它们进行分析。
当我单击 Analyze Projects 按钮时,它会调用 analyze() 函数,该函数循环访问 QListWidget 的 QListWidgetitems。
我不知道如何访问组成我的自定义小部件的小部件。在我的示例中,我需要检查复选框是否实际上已选中,如果是,则从构成我的自定义小部件的其他小部件获取标签文本。
程序如下所示:
相关代码:
#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)
您必须通过传递 QListWidgetItem
使用 itemWidget()
方法来获取小部件:
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)