如何设置"普通"或"扁平" QTableWidgetItem的背景颜色

时间:2014-07-26 18:29:35

标签: c++ qt qt4 qtablewidget qtablewidgetitem

我有一个QTableWidget。我想为行添加交替的背景颜色,但我不能使用QTableWidget :: setAlternatingRowColors,因为我需要一行两行,另一行需要接下来的两行等等(见下图)。 / p>

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

但我没有得到一个平坦的"或"普通"背景,但渐变和圆角:

Cell color

我想在整个细胞上都有背景颜色,没有进一步的装饰"。我怎么能摆脱这个?

1 个答案:

答案 0 :(得分:1)

当您选择单个颜色作为背景(QBrush构建QColor)时,样式引擎会尝试渲染样式化背景,在您的情况下会使用边框绘制此渐变。

您可以使用从QBrush构造的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));