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