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);
相关推荐
AI人工智能+电脑小能手13 小时前
【大白话说Java面试题 第56题】【JVM篇】第16题:JVM有哪些垃圾收集器?
java·开发语言·jvm·面试
2401_8654396313 小时前
CSS中隐藏元素的多重技巧与应用场景
开发语言·前端·javascript
雁迟13 小时前
第六章:for 循环与 while 循环语句
开发语言·r语言
故事和你9113 小时前
洛谷-【图论2-2】最短路1
开发语言·数据结构·c++·算法·动态规划·图论
csbysj202013 小时前
Git 工作流程
开发语言
johnrui14 小时前
JUC之AQS
java·开发语言·jvm
沫璃染墨14 小时前
红黑树完全指南:从核心原理到插入验证全实现
开发语言·c++·算法
yu859395814 小时前
基于 QT5.7.0 的八线激光雷达点云聚类实现
开发语言·qt·聚类
yoyo_zzm14 小时前
汇编到PHP:五大编程语言核心特性全解析
开发语言·汇编·php
.ZGR.14 小时前
线程池相关知识及并发统计案例实现
java·开发语言