qtablewidget设置只读
时间: 2024-01-19 17:04:19 浏览: 109
可以使用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);
```
阅读全文