QStandardItem не добавляет детей в первый ряд - PullRequest
1 голос
/ 16 апреля 2020

Очевидно, что установка элемента в той же строке, но в новом столбце, всегда добавляет новую строку.

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()

Что я действительно хочу, так это чтобы мои данные были в одной строке, а не добавлялись новая строка для отображения столбцов.

Важное примечание: У меня нет доступа к модели в контексте создания элементов.

Window screenshot

1 Ответ

1 голос
/ 16 апреля 2020

Из того, что вы хотите получить, ясно видно, что «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)

    <b>model.appendRow([my_item, sub_item])</b>
    view.show()

    app.exec_()
...