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);
相关推荐
许野平2 分钟前
Rust:AtomicI8 还是 Mutex<u8>?
开发语言·后端·rust·mutex·atomic
Root_Smile3 分钟前
【C++】单例模式
开发语言·c++·单例模式
0x派大星12 分钟前
【Golang】——Gin 框架中的表单处理与数据绑定
开发语言·后端·golang·go·gin
WangYaolove131430 分钟前
请介绍一下Python的网络编程以及如何使用socket模块进行网络通信
开发语言·网络·python
小王同学的C++35 分钟前
什么是 C++ 内联函数?它的作用是什么?
开发语言·c++
尘浮生1 小时前
Java项目实战II基于Spring Boot的工作流程管理系统设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·微信·微信小程序·小程序
cccccc语言我来了2 小时前
c++--------《set 和 map》
开发语言·c++·windows
java小吕布2 小时前
Java NIO 深度解析:构建高效的 I/O 操作
java·开发语言·nio
秋恬意2 小时前
Java NIO 核心知识总结
java·开发语言·nio