我有一个带有3列的QTableWidget
。其中两列中有一些文本,但其中一列是空的,我希望它有一个背景颜色。此外,我希望单元格有边框。
如果我这样做:
int i = 0;
foreach (tableData el, data) {
//setting the first cell
ui->eventTable->setItem(i, 1, new QTableWidgetItem);
//ui->eventTable->item(i, 1)->setBackground(el.severityColor);
//ui->eventTable->item(i, 1)->setBackgroundColor(el.severityColor);
ui->eventTable->item(i, 1)->setData(
Qt::BackgroundRole,
QBrush(el.severityColor)
);
//setting the third cell
++i;
}
一切都如预期般工作。
但如果在这段代码之前尝试添加边框,则会出现问题:
QString style(
"QTableWidget::item {"
"border: 1px solid white;"
"}"
);
ui->eventTable->setStyleSheet(style);
背景未设置。
我尝试使用setBackground()
、setBackgroundColor()
(即使它已被弃用)和setData()
,如代码所示,但结果是相同的。
此外,我尝试使用setShowGrid(true)
替换上面的样式表,但边框没有显示。
您可以通过创建一个1行1列的表格并尝试设置单元格的背景色,然后添加边框样式表来重现此问题。
我漏掉了什么吗?我还应该尝试什么? 作为一种替代方法,我可以在样式中针对特定行/单元格进行定位,以便构建一个达到目标的样式表字符串吗?
编辑:
我也可以在 QTableWidget::item
中添加其他的样式并将其应用,问题出在边框上。
我还尝试以以下方式编写边框样式:
border-width: 1px;
border-style: solid;
border-color: white;
但仍然没有成功。 另外,如果我从样式中设置背景,它可以工作。如果我在代码中设置它,则无法正常工作。
gridline-color
就足够了。我发现使用setStylesheet()
设置的样式比使用setBackground()
等设置的样式具有更高的优先级,您能否提供任何文档,让我可以阅读这方面的内容?谢谢。 - N Alex