2

我有一个 QTableWidget。我想为行使用交替的背景颜色,但我不能使用 QTableWidget::setAlternatingRowColors 因为我需要一种颜色用于两行,另一种颜色用于接下来的两行,依此类推(见下图)。

因此,当我添加一个 QTableWidgetItem 时,我通过 QTableWidgetItem::setBackground() 手动设置了相应的背景颜色。

但是我没有得到“平坦”或“普通”的背景,而是渐变和圆角:

单元格颜色

我想在整个单元格上都有背景颜色,而不需要进一步的“装饰”。我怎样才能摆脱这个?

4

1 回答 1

1

当您选择一种颜色作为背景(QBrush由 a 构造QColor)时,样式引擎会尝试呈现样式化背景,在您的情况下,它会使用边框绘制此渐变。

您可以使用QBrush从 a 构造的 a来欺骗样式引擎QImage,因此渲染引擎会准确地绘制该图像,仅此而已。在您的情况下,请使用具有单个像素的图像,即您想要的颜色作为背景。为此,构建一个 1x1 大小QImage并使用 设置像素颜色fill,然后将该图像用作画笔:

// Create the image (using the default image format)
QImage img(QSize(1, 1), QImage::Format_ARGB32_Premultiplied);

// Set the color, here light gray:
img.fill(QColor(224, 224, 224));

// Apply the image as the background for the item:
item->setBackground(QBrush(img));
于 2014-07-27T22:03:56.773 回答