QTableWidgetItem如何设置单元格边框和背景色?
How to set cell border and background color in QTableWidgetItem?
我有一个包含 3 列的 QTableWidget
。其中 2 列中有一些文本,但其中一列是空的,我希望它具有背景色。我也希望单元格有边框。
如果我这样做
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)
insted 上面的样式表,但是没有显示边框。
您可以通过创建 1 行 1 列的 table 并尝试设置单元格的背景,然后添加边框的样式表来重现此问题。
我是不是漏掉了什么?我还应该尝试什么?
作为替代方案,我可以在样式中定位特定的 rows/cells,这样我就可以构建一个符合我要求的样式表字符串吗?
编辑:
我可以在 QTableWidget::item
中使用其他样式并应用它们,问题是当我有边框时。
我也试过把边框样式写成:
border-width: 1px;
border-style: solid;
border-color: white;
但仍然没有运气。
另外,如果我从样式设置背景,它就可以工作。如果我在代码中设置它不起作用。
我想您需要设置背景和边框属性的样式
QTableView {
background-color : none;
}
QTableView::item {
border: 1px solid white;
background-color : none;
}
以下是让您的 table 适当设置样式所需的属性。注意gridline-color
是定义item边界的属性,在QTableView
中定义,不是QTableView::item
.
QTableView
{
color: {color};
border: 1px solid {color};
background: {color};
gridline-color: {color};
}
QTableView::item
{
background: {color};
}
显然您会用每个 属性 的适当颜色替换 {color}
。
我有一个包含 3 列的 QTableWidget
。其中 2 列中有一些文本,但其中一列是空的,我希望它具有背景色。我也希望单元格有边框。
如果我这样做
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)
insted 上面的样式表,但是没有显示边框。
您可以通过创建 1 行 1 列的 table 并尝试设置单元格的背景,然后添加边框的样式表来重现此问题。
我是不是漏掉了什么?我还应该尝试什么? 作为替代方案,我可以在样式中定位特定的 rows/cells,这样我就可以构建一个符合我要求的样式表字符串吗?
编辑:
我可以在 QTableWidget::item
中使用其他样式并应用它们,问题是当我有边框时。
我也试过把边框样式写成:
border-width: 1px;
border-style: solid;
border-color: white;
但仍然没有运气。 另外,如果我从样式设置背景,它就可以工作。如果我在代码中设置它不起作用。
我想您需要设置背景和边框属性的样式
QTableView {
background-color : none;
}
QTableView::item {
border: 1px solid white;
background-color : none;
}
以下是让您的 table 适当设置样式所需的属性。注意gridline-color
是定义item边界的属性,在QTableView
中定义,不是QTableView::item
.
QTableView
{
color: {color};
border: 1px solid {color};
background: {color};
gridline-color: {color};
}
QTableView::item
{
background: {color};
}
显然您会用每个 属性 的适当颜色替换 {color}
。