weixin_43833848
qsw77
采纳率100%
2018-12-04 02:20 阅读 3.1k
已采纳

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    weixin_43833848 qsw77 2018-12-04 03:32

    问题得到解决,多谢!!

    点赞 评论 复制链接分享
  • TJbell TJbell 2018-12-04 03:19

    我的做法是实现一个委托(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); //设置某列只读

    点赞 1 评论 复制链接分享

相关推荐