У меня есть QTableWidget. Я хочу иметь чередующиеся цвета фона для строк, но я не могу использовать QTableWidget :: setAlternatingRowColors, потому что мне нужен один цвет для двух строк и другой для следующих двух и так далее (см. Изображение ниже).
Таким образом, когда я добавляю QTableWidgetItem, я устанавливаю соответствующий цвет фона вручную с помощью QTableWidgetItem :: setBackground ().
Но я получаю не «плоский» или «простой» фон, а градиент и закругленные углы:
Я хотел бы иметь цвет фона по всем ячейкам, без дальнейшего «украшения». Как я могу избавиться от этого?
Когда вы выбираете один цвет в качестве фона (QBrush
построен из QColor
), движок стилей пытается отобразить стилизованный фон, который в вашем случае рисует этот градиент с рамкой.
Вы можете обмануть движок стиля, используя QBrush
построен из QImage
так что движок рендеринга рисует именно так это изображение и ничего более. В вашем случае используйте изображение с одним пикселем, а именно цвет, который вы хотите в качестве фона. Для этого построим 1×1 размером 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));