QStandardItem不在第一行添加子项

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

显然,将项目设置在同一行但在新列上,总是添加新行。

from PySide2 import QtCore, QtWidgets, QtGui

# Items for the first row
my_item = QtGui.QStandardItem('Row 0, Col 0')
sub_item = QtGui.QStandardItem('Row 0, Col 1')

# This should add my sub item on the row 0...
my_item.setChild(0, 1, sub_item)

# Model and view
view = QtWidgets.QTreeView()
model = QtGui.QStandardItemModel()
model.setHorizontalHeaderLabels(['col1', 'col2'])
view.setModel(model)


model.appendRow(my_item)    
view.show()

我真正想要的是将数据放在一行中,而不是添加新的行来显示列。

重要提示:在创建项目的上下文中,我无权访问模型。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9OYjZJdS5wbmcifQ==” alt =“窗口屏幕截图”>

python pyside2 qtreeview qstandarditem
2个回答
1
投票

从您想要获得的结果中可以清楚地看到,“ sub_item”不是“ my_item”的子级,而是同级,因此您必须使用以下代码将其添加:

from PySide2 import QtCore, QtWidgets, QtGui


if __name__ == "__main__":

    app = QtWidgets.QApplication()

    # Items for the first row
    my_item = QtGui.QStandardItem("Row 0, Col 0")
    sub_item = QtGui.QStandardItem("Row 0, Col 1")

    # Model and view
    view = QtWidgets.QTreeView()
    model = QtGui.QStandardItemModel()
    model.setHorizontalHeaderLabels(["col1", "col2"])
    view.setModel(model)

    model.appendRow([my_item, sub_item])
    view.show()

    app.exec_()

0
投票

谢谢您的回答。不幸的是,就像我在第一条消息中指出的那样,在上下文中,我正在创建项目,但是没有模型。

还有其他选择吗?

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