【问题标题】:TableView not editable表格视图不可编辑
【发布时间】:2021-10-07 01:05:08
【问题描述】:

为什么这段代码中的 TableView 不可编辑。我尝试将 editTriggers 设置为 AllEditTriggers 值,但没有成功:

import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import Qt

class TableModel(QtCore.QAbstractTableModel):
    def __init__(self, data):
        super(TableModel, self).__init__()
        self._data = data
    def data(self, index, role):
        if role ==  Qt.DisplayRole:
            return self._data[index.row()][index.column()]
    def rowCount(self, index):
        return len(self._data)
    def columnCount(self, index):
        return len(self._data[0])


app = QtWidgets.QApplication(sys.argv)
table = QtWidgets.QTableView()
table.move(200,200)
table.setFixedSize(500,300)

data = [
[3, 5, 2],
[1, 0, 0],
[3, 8, 0],
[3, 3, 2],
[7, 8, 9],
]

model = TableModel(data)
table.setModel(model)
table.show()
app.exec_()

【问题讨论】:

    标签: python model pyqt5 tableview


    【解决方案1】:

    默认模型不可编辑,要使其可编辑,除了实现实现更改的 setData() 方法外,您还必须在 flags() 方法中添加 Qt::ItemIsEditable 标志。

    class TableModel(QAbstractTableModel):
        def __init__(self, data):
            super(TableModel, self).__init__()
            self._data = data
    
        def rowCount(self, parent=QModelIndex()):
            return len(self._data)
    
        def columnCount(self, parent=QModelIndex()):
            return len(self._data[0])
    
        def data(self, index, role=Qt.DisplayRole):
            if role == Qt.DisplayRole:
                return self._data[index.row()][index.column()]
    
        def setData(self, index, value, role=Qt.EditRole):
            if role in (Qt.DisplayRole, Qt.EditRole):
                self._data[index.row()][index.column()] = value
                self.dataChanged.emit(index, index)
            return True
    
        def flags(self, index):
            return super().flags(index) | Qt.ItemIsEditable
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 2011-12-16
      • 2013-03-30
      相关资源
      最近更新 更多