我有带有水平 headerView 的 QTableView 对象,(我隐藏了垂直)。我将 setShowGrid(false) 设置为从 qtableView 中删除网格,但是如何删除 QTableView 与其水平标题之间的分隔符边框。我试过了:
tableView->horizontalHeader()->setFrameShape(QFrame::VLine)
但没有成功。谢谢你
我有带有水平 headerView 的 QTableView 对象,(我隐藏了垂直)。我将 setShowGrid(false) 设置为从 qtableView 中删除网格,但是如何删除 QTableView 与其水平标题之间的分隔符边框。我试过了:
tableView->horizontalHeader()->setFrameShape(QFrame::VLine)
但没有成功。谢谢你
好的,我重新实现了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());
}
如果你的意思和我一样的“边框”,它是当前风格的一部分。所以,如果你想摆脱它,你必须使用样式表来定义你的自定义样式。
这是一个例子:
QString style = R"( QHeaderView::section {
border: 1px solid black;
border-bottom: 0px;
}
)";
tableView->horizontalHeader()->setStyleSheet(style);
此样式表将标题部分的整体边框设置为 1px 宽度的黑线并隐藏底部边框。
注意:我在这里使用C++11 原始字符串文字,所以不要混淆。这只是一个字符串。