Как установить & quot; обычный & quot; или «плоский» цвет фона для QTableWidgetItem

У меня есть QTableWidget. Я хочу иметь чередующиеся цвета фона для строк, но я не могу использовать QTableWidget :: setAlternatingRowColors, потому что мне нужен один цвет для двух строк и другой для следующих двух и так далее (см. Изображение ниже).

Таким образом, когда я добавляю QTableWidgetItem, я устанавливаю соответствующий цвет фона вручную с помощью QTableWidgetItem :: setBackground ().

Но я получаю не «плоский» или «простой» фон, а градиент и закругленные углы:

Цвет ячейки

Я хотел бы иметь цвет фона по всем ячейкам, без дальнейшего «украшения». Как я могу избавиться от этого?

2

Решение

Когда вы выбираете один цвет в качестве фона (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));
1

Другие решения


По вопросам рекламы [email protected]