如何根据在 ListView 1 上单击的项目更新 ListView 2
How to updated ListView 2 based on Item clicked on ListView 1
我是 MVC 和 PyQt 编程的新手。我想找出在单击另一个 ListView 中的项目时更新 ListView 的方法。我要通过 MVC。
ListView 1 通过列出 XML 文件的所有主节点进行更新。
ListView 2 应使用 ListView 1 中单击的父节点的子节点进行更新。
我如何从 ListView1 (onClicked()) 发出信号并在 ListView2 中捕获被单击的正确项目。一旦我有了这个项目,我就可以将它与现有逻辑一起使用,以使用这个项目填充 ListView2。
到目前为止,我已经尝试了不同的方法,但 none 奏效了。其中:
val = ListView1.clicked.connect(getRowName)
def getRowName():
data = ListView1.selectedIndexes()
print(data)
return data
"data" 即使在单击 ListView1 中的项目后,变量也没有任何值。
还有一件事,我是否必须为 ListView 1 和 ListView 2 分别考虑两个模型?
您可能需要考虑使用 QListWidgets
和 QListWidgetItems
。 QListWidgets
有一个 itemSelectionChanged
信号。
listwidget1 = QListWidget(self)
listwidget2 - QListWidget(self)
listwidget1.itemSelectionChanged.connect(function_that_updates_listwidget2)
如果您设置为使用 QListView
,您可以子类化 QListView
并覆盖 selectionChanged
方法,该方法在选择更改时调用。您可以直接在该回调中对列表 2 进行更新,或者让它发出类似于 QListWidget
的自定义信号,然后使用 list2 更新函数处理该信号。
class MyList(QListView):
itemSelectionChanged = pyqtSignal()
def selectionChanged(self, selected, deselected):
super(MyList, self).selectionChanged(selected, deselected)
self.itemSelectionChanged.emit()
是的,如果每个列表视图显示不同的数据,那么您将需要使用不同的模型。
我是 MVC 和 PyQt 编程的新手。我想找出在单击另一个 ListView 中的项目时更新 ListView 的方法。我要通过 MVC。
ListView 1 通过列出 XML 文件的所有主节点进行更新。 ListView 2 应使用 ListView 1 中单击的父节点的子节点进行更新。
我如何从 ListView1 (onClicked()) 发出信号并在 ListView2 中捕获被单击的正确项目。一旦我有了这个项目,我就可以将它与现有逻辑一起使用,以使用这个项目填充 ListView2。
到目前为止,我已经尝试了不同的方法,但 none 奏效了。其中:
val = ListView1.clicked.connect(getRowName)
def getRowName():
data = ListView1.selectedIndexes()
print(data)
return data
"data" 即使在单击 ListView1 中的项目后,变量也没有任何值。
还有一件事,我是否必须为 ListView 1 和 ListView 2 分别考虑两个模型?
您可能需要考虑使用 QListWidgets
和 QListWidgetItems
。 QListWidgets
有一个 itemSelectionChanged
信号。
listwidget1 = QListWidget(self)
listwidget2 - QListWidget(self)
listwidget1.itemSelectionChanged.connect(function_that_updates_listwidget2)
如果您设置为使用 QListView
,您可以子类化 QListView
并覆盖 selectionChanged
方法,该方法在选择更改时调用。您可以直接在该回调中对列表 2 进行更新,或者让它发出类似于 QListWidget
的自定义信号,然后使用 list2 更新函数处理该信号。
class MyList(QListView):
itemSelectionChanged = pyqtSignal()
def selectionChanged(self, selected, deselected):
super(MyList, self).selectionChanged(selected, deselected)
self.itemSelectionChanged.emit()
是的,如果每个列表视图显示不同的数据,那么您将需要使用不同的模型。