QT QTbaleView移除网线

在一般的QTable表格中会有网格线,如下图:
这里写图片描述

如何才能移除网格线,若要移除全部网格线,只需一句代码:

view->setShowGrid(false);

若要移除单个水平或者垂直网格线,则需要借助QStyledItemDelegate,一下通过继承QStyledItemDelegate来实现移除垂直或水平的网格线:


class QLineDelegate : public QStyledItemDelegate
{
public:
    QLineDelegate(QTableView* tableView)
    {
        int gridHint = tableView->style()->styleHint(QStyle::SH_Table_GridLineColor, new QStyleOptionViewItemV4());
        QColor gridColor = static_cast<QRgb>(gridHint);
        pen = QPen(gridColor, 0, tableView->gridStyle());
        view = tableView;
    }
protected:
    void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
    {
        QStyledItemDelegate::paint(painter, option, index);
        QPen oldPen = painter->pen();
        painter->setPen(pen);
        //painter->drawLine(option.rect.topRight(), option.rect.bottomRight());//显示垂直网格线
        painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());//显示水平网格线
        painter->setPen(oldPen);
    }
private:
    QPen pen;
    QTableView* view;
};

设置view不显示网格线,设置item委托

view->setShowGrid(false);
view->setItemDelegate(new QLineDelegate(view));

效果:
这里写图片描述
这里写图片描述

但是最边上的边框线也没有了,知道如何处理的在下面留言!

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值