3

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

tableView->horizontalHeader()->setFrameShape(QFrame::VLine)

但没有成功。谢谢你

4

2 回答 2

4

好的,我重新实现了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());
}
于 2016-03-22T10:06:55.937 回答
3

如果你的意思和我一样的“边框”,它是当前风格的一部分。所以,如果你想摆脱它,你必须使用样式表来定义你的自定义样式。

这是一个例子:

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

tableView->horizontalHeader()->setStyleSheet(style);

此样式表将标题部分的整体边框设置为 1px 宽度的黑线并隐藏底部边框。

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

于 2016-03-22T08:15:58.070 回答