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);
相关推荐
matlab代码15 分钟前
基于matlab PCA人脸识别系统【源码63期】
开发语言·matlab
Terra.K15 分钟前
后端开发阶段性总结
java·开发语言·后端
学逆向的18 分钟前
PE——合并节
开发语言·网络安全·pe
是个西兰花21 分钟前
C++11:线程库与线程安全问题
开发语言·c++
点心的游戏开发世界23 分钟前
GDScript 入门笔记(十三):字符串操作
开发语言·笔记·游戏引擎·godot
少司府33 分钟前
C++进阶:智能指针
开发语言·数据结构·c++·b树·算法·c·智能指针
matlab代码35 分钟前
基于matlab的红绿灯图像检测识别系统【源码60期】
开发语言·matlab
博界IT精灵1 小时前
C语言中的数据类型及其转换
c语言·开发语言
软件黑马王子1 小时前
13.缓存池优化:对象上限配置
开发语言·前端框架·c#
李迟1 小时前
Golang实践录:工程框架实践:搭建工程模板
开发语言·后端·golang