在一般的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));效果:
但是最边上的边框线也没有了,知道如何处理的在下面留言!