Qt 设置QTableView的某列或某行只读

我的做法是实现一个委托(delegate),然后把它设给你要只读的列或行

cpp 复制代码
class ReadOnlyDelegate: public QItemDelegate
{
 
public:
    ReadOnlyDelegate(QWidget *parent = NULL):QItemDelegate(parent)
    {}
 
    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const override //final
    {
        Q_UNUSED(parent)
        Q_UNUSED(option)
        Q_UNUSED(index)
        return NULL;
    }
};

就是不返回任何editor。

然后去设置TableView对象的属性如下:

cpp 复制代码
ReadOnlyDelegate* readOnlyDelegate = new ReadOnlyDelegate();
ui->tableView->setItemDelegateForColumn(2, readOnlyDelegate); //设置某列只读
ui->tableView->setItemDelegateForRow(0, readOnlyDelegate);    //设置某行只读```

如果要将整个TableView设为只读模式,则只需下面一句即可:

cpp 复制代码
 ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
相关推荐
2603_965896628 分钟前
JavaScript 原型与原型链
开发语言·前端·javascript
朋友圈自动点赞工具14 分钟前
Ruby方法查找:对象不存方法
开发语言·前端·ruby·科技资讯
蓝祁子yoky20 分钟前
Qt学习日记 Day15:网络编程(二)- UDP基础
网络·qt·学习
D e re k ZH23 分钟前
C++ 模板与泛型编程进阶(No 2)
开发语言·c++
一级新生27 分钟前
LLM _ Agent _ Skill _ 专家 的关系与选型笔记
java·开发语言·人工智能·笔记·大模型·智能体·skill
starzy199028 分钟前
Scala String操作:从插值器到正则的完整指南
开发语言·后端·scala
普通人630 分钟前
CSS-box-sizing-使用指南
开发语言·前端·css·1024程序员节
她说彩礼65万32 分钟前
C# TaskCompletionSource
java·开发语言·c#
eggwyw37 分钟前
C++深入浅出探索数据结构的原理
开发语言·c++
eggwyw39 分钟前
C++深入浅出讲解希尔排序算法的实现
开发语言·c++