gpt4 book ai didi

python - 如何禁用 QtableView pyqt 中的某些列?

转载 作者:行者123 更新时间:2023-11-28 17:42:03 25 4
gpt4 key购买 nike

我想填充一个 tableView,但我想禁用某些列,这样用户就无权修改其内容。

def remplissageTableView(self):

headers=["Janvier", "fevrier","Mars","Avril","Mai","Juin","Juillet", "Aout","Septembre","Octobre","Novembre","Decembre"]
rows=[]
for i in range(5) :
row = ["","","","","","","","","","","",""]
rows.append(row)
model =PrevisionTableModel(rows,headers)
self.tableView.setModel(model)

我最初想要一个 tableView 12 列 5 行是一个有点愚蠢的解决方案:p

最佳答案

使用 proxy model控制 flags在 table 的模型上:

class ProxyModel(QtGui.QIdentityProxyModel):
def __init__(self, parent=None):
super(ProxyModel, self).__init__(parent)
self._columns = set()

def columnReadOnly(self, column):
return column in self._columns

def setColumnReadOnly(self, column, readonly=True):
if readonly:
self._columns.add(column)
else:
self._columns.discard(column)

def flags(self, index):
flags = super(ProxyModel, self).flags(index)
if self.columnReadOnly(index.column()):
flags &= ~QtCore.Qt.ItemIsEditable
return flags

...
model = PrevisionTableModel(rows, headers)
self.proxy = ProxyModel(self)
self.proxy.setSourceModel(model)
self.tableView.setModel(self.proxy)
self.tableView.model().setColumnReadOnly(3, True)

关于python - 如何禁用 QtableView pyqt 中的某些列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com