我想在Qt中以特定的样式显示表格。我想用相同的颜色和相同的宽度绘制所有网格线。
问题是,很难设计
QHeaderView
。我一直得到 2px 网格宽度或根本没有网格。
我有以下带有一个 QTableWIdget 的窗口
和相关的样式表
QWidget {
background-color: #333333;
color: #fffff8;
}
QHeaderView::section {
background-color: #646464;
padding: 4px;
border: 1px solid #fffff8;
font-size: 14pt;
}
QTableWidget {
gridline-color: #fffff8;
font-size: 12pt;
}
QTableWidget QTableCornerButton::section {
background-color: #646464;
border: 1px solid #fffff8;
}
有什么技巧可以让所有网格线的宽度都是 1px 吗?我使用的是 4.8.5,无法升级到版本 5.x。
诀窍是女巫border-style: none;
,
QHeaderView::section
,border-left
和border-right
开始工作后,border-top
中的border-bottom
。 QHeaderView::section
的正确样式应该是
QHeaderView::section {
background-color: #646464;
padding: 4px;
font-size: 14pt;
border-style: none;
border-bottom: 1px solid #fffff8;
border-right: 1px solid #fffff8;
}
QHeaderView::section:horizontal
{
border-top: 1px solid #fffff8;
}
QHeaderView::section:vertical
{
border-left: 1px solid #fffff8;
}
我认为您所做的是为部分单元格添加了额外的边框,并且部分属性应该看起来像这样(尽管我没有尝试这个解决方案)。
QHeaderView::section {
background-color: #646464;
padding: 4px;
border: 0px;
font-size: 14pt;
}
有关如何设置标题样式的更多信息,请参阅:
QTableView#tableWidget QHeaderView::section:horizontal
{
height: 24px;
border-style: none;
border-left: 1px solid #ecedef;
border-top: 1px solid #161618;
border-right: 1px solid #b1b1b5;
border-bottom: 1px solid #161618;
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6);
}
/*
QTableView#tableWidget QHeaderView::section:horizontal:first,
QTableView#tableWidget QHeaderView::section:horizontal:last
{
border-left-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6);
}
*/
QTableView#tableWidget QHeaderView
{
/* draw the hole hor top & bottom line for the header */
height: 24px;
border-top: 1px solid #161618;
border-bottom: 1px solid #161618;
}
QTableView#tableWidget QHeaderView::section:horizontal:first
{
border-left-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6);
}
QTableView#tableWidget QHeaderView::section:horizontal:last
{
border-right-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6);
}
QTableView#tableWidget QHeaderView::section:horizontal
{
/* for each section draw ONLY left & right lines */
height: 24px;
border-style: none;
border-left: 1px solid #ecedef;
border-right: 1px solid #b1b1b5;
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6);
}