QT QTbaleView移除网线

xiaoxiao2021-02-28  75

在一般的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));

效果:

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

转载请注明原文地址: https://www.6miu.com/read-62440.html

最新回复(0)