如何使用 pyside 在 QtableView 单元格中设置数据

How to SetData in a QtableView Cell using pyside

我正在尝试在我的 QtableView 的单元格中设置一个值。我正在使用 Pyside2。

class TableModel(QtCore.QAbstractTableModel):

    def __init__(self, mlist=None):
        super(TableModel, self).__init__()
        self._items = [] if mlist == None else mlist
        self._header = []

    def data(self, index, role = QtCore.Qt.DisplayRole):
        if not index.isValid():
           return None
        if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole:
            return self._items[index.row()][index.column()]
        return None

    def setData(self, index, value, role = QtCore.Qt.EditRole):
        if value is not None and role == QtCore.Qt.EditRole:
            self._items[index.row()][index.column()] = value
            return True
        return False

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
 # skip the irrelevant code #
    Table = QTableView()
    model = TableModel()
    Table.setModel(model)
    row, column = a_function_that_outputs_the_row_and_column_of_the_cell_to_edit()

    self.Table.model().setData(index ?, value)

我正在努力了解如何将索引作为参数传递,我有行和列,关于如何正确执行此操作的任何帮助?

您需要使用 model.index(row, column, parent=None)(请参阅 documentation) to get the appropriate QModelIndex
如果模型是二维的(不是树视图),则不需要父级:

model.setData(model.index(row, column), value)