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