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);
相关推荐
小当家.10514 分钟前
MCP 协议深度解析:AI 领域的 USB-C 接口
开发语言·人工智能·agent·tool·mcp
accept 99%24 分钟前
python版提取 PDF 的常用第三方库与工具
开发语言·python·pdf
lzhdim25 分钟前
C# 通过 Windows API 实现进程内存读写操作
开发语言·windows·c#
-银雾鸢尾-32 分钟前
C#中的预处理指令
开发语言·c#
Livia要学习39 分钟前
Python面向对象三大特性:封装、继承、多态
开发语言·python
dalong1043 分钟前
Savitzky-Golay 的C# 实现
开发语言·kotlin·c#
show4331 小时前
多格式导出怎么做?2026免费小程序TXT/SRT实践
开发语言·小程序·c#
岁岁养乐多1 小时前
LangChain4j 工厂模式
java·开发语言
小小龙学IT1 小时前
Day 28 项目调试与优化 —— 给聊天室做一次“全面体检“
c语言·开发语言
hy.z_7772 小时前
【C++】9. Vector
开发语言·c++