如何使用 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)
我正在尝试在我的 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)