用于QstandardItem第二列的setData

时间:2017-01-09 03:20:32

标签: pyside qtreeview qstandarditem

如何为QStandardItem的第二列设置数据然后添加到QTreeview?

在我的情况下,我只想放置一个复选框或文本作为示例。

enter image description here

enter image description here

import sys
from PySide import QtGui, QtCore

class Browser(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Browser, self).__init__(parent)

        self.initUI()

    def initUI(self):
        self.resize(200, 300)
        self.setWindowTitle('Assets')

        self.items_model = QtGui.QStandardItemModel()
        self.ui_items = QtGui.QTreeView()
        self.ui_items.setAlternatingRowColors(True)
        self.ui_items.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
        self.ui_items.header().setResizeMode(QtGui.QHeaderView.ResizeToContents)
        self.ui_items.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
        self.ui_items.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
        self.ui_items.setModel(self.items_model)

        grid = QtGui.QGridLayout()
        grid.setContentsMargins(0, 0, 0, 0)
        grid.addWidget(self.ui_items, 0, 0)
        self.setLayout(grid)

        self.update_model()

    def update_model(self):
        model = self.ui_items.model()
        model.clear()
        model.setHorizontalHeaderLabels(['Assets'])

        # Create Data
        for i in range(1,5):
            root = QtGui.QStandardItem()
            root.setData('Apple', role=QtCore.Qt.DisplayRole)
            root.setColumnCount(2)


            model.appendRow(root)

        self.ui_items.expandAll()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    ex = Browser()
    ex.show()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:2)

您可以将项目列表传递给appendRow,每个项目代表一列:

    id| name|table_in| where_clause

    1 | Sam | t1 | age = 22

    2 | John| t2 | age = 23 and sex = 'male'