如何从 QHeaderView 中删除水平边框
How to remove horizontal borders from QHeaderView
我有 QTableView object 水平 headerView,(我隐藏了垂直)。
我设置 setShowGrid(false) 以从 qtableView 中删除网格,但是如何删除 QTableView 与其水平 header 之间的分隔符边框。
我试过了:
tableView->horizontalHeader()->setFrameShape(QFrame::VLine)
但没有成功。
谢谢
如果你的意思和我一样"border",它就是当前风格的一部分。所以,如果你想摆脱它,你必须使用 style sheets.
这是一个例子:
QString style = R"( QHeaderView::section {
border: 1px solid black;
border-bottom: 0px;
}
)";
tableView->horizontalHeader()->setStyleSheet(style);
此样式 sheet 将页眉部分的总边框设置为 1 像素宽的黑线并隐藏底部边框。
注意:我在这里使用的是 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());
}
我有 QTableView object 水平 headerView,(我隐藏了垂直)。 我设置 setShowGrid(false) 以从 qtableView 中删除网格,但是如何删除 QTableView 与其水平 header 之间的分隔符边框。 我试过了:
tableView->horizontalHeader()->setFrameShape(QFrame::VLine)
但没有成功。 谢谢
如果你的意思和我一样"border",它就是当前风格的一部分。所以,如果你想摆脱它,你必须使用 style sheets.
这是一个例子:
QString style = R"( QHeaderView::section {
border: 1px solid black;
border-bottom: 0px;
}
)";
tableView->horizontalHeader()->setStyleSheet(style);
此样式 sheet 将页眉部分的总边框设置为 1 像素宽的黑线并隐藏底部边框。
注意:我在这里使用的是 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());
}