单击树项目时如何获取当前对象(或数据)

问题描述 投票:0回答:1

我使用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 | |-香蕉| ...

python pyqt pyqt5 qtreeview
1个回答
0
投票

谢谢!蒂姆·科纳(TimKörner)。

© www.soinside.com 2019 - 2024. All rights reserved.