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);
相关推荐
SunkingYang16 小时前
QT中使用Lambda表达式作为槽函数用法,以及捕获列表和参数列表用法与区别
c++·qt·用法·lambda表达式·捕获列表·槽函数·参数列表
森叶16 小时前
Java 比 Python 高性能的原因:重点在高并发方面
java·开发语言·python
qq_3168377516 小时前
uni.chooseMedia 读取base64 或 二进制
开发语言·前端·javascript
方圆工作室16 小时前
【C语言图形学】用*号绘制完美圆的三种算法详解与实现【AI】
c语言·开发语言·算法
小二·17 小时前
Python Web 开发进阶实战:混沌工程初探 —— 主动注入故障,构建高韧性系统
开发语言·前端·python
Lkygo17 小时前
LlamaIndex使用指南
linux·开发语言·python·llama
进阶小白猿17 小时前
Java技术八股学习Day20
java·开发语言·学习
代码村新手17 小时前
C++-类和对象(中)
java·开发语言·c++
葵花楹17 小时前
【JAVA课设】【游戏社交系统】
java·开发语言·游戏
赵谨言17 小时前
Python串口的三相交流电机控制系统研究
大数据·开发语言·经验分享·python