gpt4 book ai didi

python - 在 `QTableWidget`中将整列设置为python中的只读

转载 作者:行者123 更新时间:2023-12-04 23:50:22 26 4
gpt4 key购买 nike

我想将表格中的列设置为只读!我尝试了所有可能的标志组合都没有成功

    item = QtGui.QTableWidgetItem()
from operator import xor
item.setFlags(xor(item.flags(),QtCore.Qt.ItemIsEditable))
self.Table.setHorizontalHeaderItem(4, item)
我也尝试了 and not!=^运算符,但列项目仍可编辑

更新
我想我误会了!我认为当我使用 insertRow()这样的操作时,将一列的Horizo​​ntalHeaderItem设置为不可编辑时,将使该列中的所有新项目自动变为不可编辑的
插入新行后,我已经对每个新添加的项目执行了这些功能!
        tableWidget.insertRow(row+1)
if tableWidget is self.myTable:
item = QtGui.QTableWidgetItem()
item.setFlags(item.flags() != QtCore.Qt.ItemIsEditable)
tableWidget.setItem(row+1, 4, item)
我认为更好(但更复杂)的解决方案是使用 setItemDelegateForColumn()QtGui.QItemDelegate()创建只读的Costum QTableWidgetItem,每次插入或创建新行时都会添加

编辑
好吧,我尝试如上所述使用 setItemDelegateForColumn()QtGui.QItemDelegate(),但是收到以下警告
> python main.py
sys:1: RuntimeWarning: Invalid return value in function QItemDelegate.createEdit
or, expected PySide.QtGui.QWidget, got PySide.QtGui.QTableWidgetItem.
我的代码是
class QTableWidgetDisabledItem(QtGui.QItemDelegate):
"""
"""
def __init__(self, parent):

QtGui.QItemDelegate.__init__(self, parent)

def createEditor(self, parent, option, index):
item = QtGui.QTableWidgetItem()
item.setFlags(item.flags() != QtCore.Qt.ItemIsEditable)
return item

def setEditorData(self, editor, index):
editor.blockSignals(True)
editor.setData(index, editor.text())
editor.blockSignals(False)

def setModelData(self, editor, model, index):
model.setData(index, editor.text())
并在MainWindow中
    self.Size = QTableWidgetDisabledItem(self.MyTable)
self.MyTable.setItemDelegateForColumn(4,self.Size)
这是个好主意...

最佳答案

我使用QLineEditor正常工作

class QTableWidgetDisabledItem(QtGui.QItemDelegate):
"""
Create a readOnly QTableWidgetItem
"""
def __init__(self, parent):

QtGui.QItemDelegate.__init__(self, parent)

def createEditor(self, parent, option, index):
item = QtGui.QLineEdit(parent)
item.setReadOnly(True)
#item.setEnabled(False)
return item

def setEditorData(self, editor, index):
editor.blockSignals(True)
editor.setText(index.model().data(index))
editor.blockSignals(False)

def setModelData(self, editor, model, index):
model.setData(index, editor.text())

然后只需按照以下方式使用它
self.Size = QTableWidgetDisabledItem(self.MyTable)
self.MyTable.setItemDelegateForColumn(4,self.Size)

关于python - 在 `QTableWidget`中将整列设置为python中的只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24024815/

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