我使用QTreeView,当我在TreeView中单击项目时,我想返回一个Item对象(或数据)而不是项目文本。>
例如,TreeView有一个名为“香蕉”的项目
|-Parent | |-Banana | |-Apple
当我点击“香蕉”时
我已经弄清楚了如何获取项目'文本'
我的代码:
import sys from PyQt5.QtWidgets import QWidget from PyQt5.QtWidgets import QTreeView from PyQt5.QtCore import QModelIndex from PyQt5.QtGui import QStandardItemModel from PyQt5.QtGui import QStandardItem from PyQt5.QtWidgets import QApplication from PyQt5.QtCore import Qt class Model(QStandardItemModel): def __init__(self, inputData): QStandardItemModel.__init__(self) # inputData # [ {"type": "Fruit", "objects": ["Apple", "Banana"]} ] d = inputData[0] # Fruit item = QStandardItem(d["type"]) child = QStandardItem(d["objects"][0]) # Apple item.appendRow(child) child = QStandardItem(d["objects"][1]) # Banana item.appendRow(child) self.setItem(0, 0, item) class Form(QWidget): def __init__(self): QWidget.__init__(self, flags=Qt.Widget) self.setWindowTitle("ItemView QTreeView") self.setFixedWidth(210) self.setFixedHeight(150) # Data data = [ {"type": "Fruit", "objects": ["Apple", "Banana"]} ] # QTreeView self.treeView = QTreeView(self) self.treeView.doubleClicked.connect(self.test) # Model self.model = Model(data) self.treeView.setModel(self.model) def test(self, selectedItem:QModelIndex): text = self.model.data(selectedItem) print(text) ### I want to make & get "Banana" Object (or data), not a text ### if __name__ == "__main__": app = QApplication(sys.argv) form = Form() form.show() exit(app.exec_())
但是我想获取数据或对象
ex)点击“香蕉”->返回(香蕉,颜色:黄色,价格:300)
没有办法获取项目的信息或对象吗?
我使用QTreeView,当我单击TreeView中的项目时,我想返回Item对象(或数据)而不是项目文本。例如,TreeView有一个名为“ Banana”的项目| -Parent | |-香蕉| ...
谢谢!蒂姆·科纳(TimKörner)。