python pyqt6 tableview 不可编辑
时间: 2023-10-15 22:05:08 浏览: 238
在Python PyQt6中,要设置QTableView中的某一列不可编辑,可以使用QStyledItemDelegate类的子类来实现。首先,你需要创建一个自定义的委托类,继承自QStyledItemDelegate。在这个委托类中,重写createEditor()方法,将它的返回值设为None,这样就可以禁止编辑了。接下来,通过调用setItemDelegateForColumn()方法,将这个自定义委托类应用到指定的列上,从而实现不可编辑的效果。以下是一个示例代码:
```python
from PyQt6.QtWidgets import QApplication, QMainWindow, QTableView, QStyledItemDelegate
from PyQt6.QtCore import Qt
class ReadOnlyDelegate(QStyledItemDelegate):
def createEditor(self, parent, option, index):
return None
app = QApplication([])
window = QMainWindow()
tableView = QTableView(window)
model = QStandardItemModel(5, 5)
tableView.setModel(model)
readOnlyDelegate = ReadOnlyDelegate()
tableView.setItemDelegateForColumn(0, readOnlyDelegate)
window.setCentralWidget(tableView)
window.show()
app.exec()
```
在这个示例中,我们创建了一个带有5行5列的QStandardItemModel,并将其设置为QTableView的模型。然后,我们创建了一个名为ReadOnlyDelegate的自定义委托类,并重写了它的createEditor()方法,将返回值设为None。接着,我们将这个自定义委托类应用到第0列上,通过调用setItemDelegateForColumn()方法。这样,第0列就变为不可编辑的了。
希望这个示例对你有所帮助!
阅读全文