QTableWidget只读
时间: 2024-01-15 12:17:28 浏览: 213
要使QTableWidget只读,可以使用setEditTriggers方法来设置单元格的编辑触发器。将其设置为QAbstractItemView.NoEditTriggers即可禁用所有单元格的编辑功能。以下是一个例子:
```python
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QAbstractItemView
app = QApplication([])
table = QTableWidget()
table.setRowCount(2)
table.setColumnCount(2)
table.setItem(0, 0, QTableWidgetItem("1"))
table.setItem(0, 1, QTableWidgetItem("2"))
table.setItem(1, 0, QTableWidgetItem("3"))
table.setItem(1, 1, QTableWidgetItem("4"))
table.setEditTriggers(QAbstractItemView.NoEditTriggers) # 设置为只读
table.show()
app.exec_()
```
相关问题
qtablewidget 只读
要将 QTableWidget 设置为只读,您可以使用以下代码:
```python
table_widget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
```
这将禁用表格视图中的所有编辑操作,包括单元格编辑,行插入/删除和列插入/删除。只读模式下,用户仍然可以选择单元格和行,但是不能进行编辑。
qtablewidget设置只读
可以使用QItemDelegate类来实现QTableWidget的只读设置。以下是一个例子:
```python
class ReadOnlyDelegate : public QItemDelegate {
public:
ReadOnlyDelegate(QObject* parent = nullptr) : QItemDelegate(parent) {}
QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override {
return nullptr; // 返回空指针,表示不创建编辑器
}
void setEditorData(QWidget* editor, const QModelIndex& index) const override {}
void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const override {}
};
// 设置某列只读
ReadOnlyDelegate* readOnlyDelegate = new ReadOnlyDelegate();
ui->tableView->setItemDelegateForColumn(2, readOnlyDelegate);
// 设置某行只读
ui->tableView->setItemDelegateForRow(0, readOnlyDelegate);
```
另外,如果想要设置QTableWidget某列不可编辑,可以使用以下方法:
```python
QTableWidgetItem* item0 = new QTableWidgetItem();
item0->setFlags(item0->flags() & (~Qt::ItemIsEditable));
ui->tableWidget->setItem(nRow, 0, item0);
```
阅读全文
相关推荐















