Qt 如何从QHeaderView中删除水平边框

Qt 如何从QHeaderView中删除水平边框,qt,qtableview,qheaderview,qframe,qabstractitemview,Qt,Qtableview,Qheaderview,Qframe,Qabstractitemview,我有一个带有水平headerView的QTableView对象(我隐藏了垂直)。 我将setShowGrid(false)设置为从qtableView中删除网格,但如何删除qtableView与其水平标题之间的分隔符边框。 我试过: 但是没有成功。 谢谢你如果你指的是和我一样的“边框”,那它就是当前样式的一部分。因此,如果您想摆脱它,必须使用样式表定义自定义样式 以下是一个例子: QString style = R"( QHeaderView::section {

我有一个带有水平headerView的QTableView对象(我隐藏了垂直)。 我将setShowGrid(false)设置为从qtableView中删除网格,但如何删除qtableView与其水平标题之间的分隔符边框。 我试过:

但是没有成功。 谢谢你

如果你指的是和我一样的“边框”,那它就是当前样式的一部分。因此,如果您想摆脱它,必须使用样式表定义自定义样式

以下是一个例子:

QString style = R"( QHeaderView::section {
                        border: 1px solid black;
                        border-bottom: 0px;             
                    }
                  )";

tableView->horizontalHeader()->setStyleSheet(style);
此样式表将标题部分的整体边框设置为1px宽的黑线,并隐藏底部边框


注意:我在这里使用的是C++11原始字符串文字,所以不要混淆。它只是一个字符串。

好的,我重新实现了paintSection方法,现在我得到了我想要的/

void MyHeaderView::paintSection(QPainter *painter, const QRect &rect,  int logicalIndex) const
{
  QString data = model() -> headerData(logicalIndex, orientation(), Qt::DisplayRole).toString();

  QFontMetrics fm = painter -> fontMetrics();

  painter -> fillRect(rect, QBrush(QColor("white")));
  painter -> drawText(rect, Qt::AlignLeft, data);

  painter -> drawLine(rect.topRight(), rect.bottomRight());
}

谢谢你的回答,但是有一个问题,我不能使用StStaseLeSeTE()方法,你不知道如何用C++命令做同样的事情,没有CSS吗?恐怕在QT-API中没有方法来切换头的下边界。如果不能使用样式表,还有另一个选项:重新实现QHeaderView::paintSection()方法。
void MyHeaderView::paintSection(QPainter *painter, const QRect &rect,  int logicalIndex) const
{
  QString data = model() -> headerData(logicalIndex, orientation(), Qt::DisplayRole).toString();

  QFontMetrics fm = painter -> fontMetrics();

  painter -> fillRect(rect, QBrush(QColor("white")));
  painter -> drawText(rect, Qt::AlignLeft, data);

  painter -> drawLine(rect.topRight(), rect.bottomRight());
}