QT中的tableview如何设置某一列只读。

如题,小白一枚,求各位大佬多多指教。不知道是否需要重写函数,还是有自带的函数可以实现?

qt

2个回答

问题得到解决,多谢!!

我的做法是实现一个委托(delegate),然后把它设给你要只读的列
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。

然后
readOnlyDelegate = new ReadOnlyDelegate();
ui->tableView->setItemDelegateForColumn(2, readOnlyDelegate); //设置某列只读

weixin_43833848
qsw77 回复TJbell: 是的 问题已经得到解决 在别的委托里index的(row,column)也设置成return NULL就可以了 非常感谢!
大约一年之前 回复
TJbell
TJbell 回复weixin_43833848: 您是自己写了另外的委托导致的么?能具体描述一下吗?
大约一年之前 回复
weixin_43833848
qsw77 请问我按照此方法设置某列只读 并且成功了,但是我在某行做了QComboBox 导致该行全部的列都有QComboBox 想消除这个bug 请问该怎么办呢
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问