Здраствуйте, подскажите пожалуйста как можно отрисовать строки разного цвета в QTableWidget, так что бы основной фон виджета остался не тронутым.
я пробывал так
C++ (Qt)
MyTable = new QTableWidget;
MyTable->setAlternatingRowColors(true);
QPalette pal;
pal.setColor(QPalette::AlternateBase,QColor(Qt::red));
pal.setColor(QPalette::Base,Qt::red);
MyTable->setPalette(pal);
pal.setColor(QPalette::Base,Qt::red); // красит задний фон и портит всю малину, затем попробывал со стандартным примером из Qt
C++ (Qt)
void TableStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,
QPainter *painter, const QWidget *widget) const
{
switch (element) {
case (PE_PanelItemViewItem): {
painter->save();
QPoint topLeft = option->rect.topLeft();
QPoint bottomRight = option->rect.topRight();
QLinearGradient backgroundGradient(topLeft, bottomRight);
if((table->rowCount())%2==0){
backgroundGradient.setColorAt(0.0, QColor(Qt::red).lighter(190));
backgroundGradient.setColorAt(1.0, Qt::magenta);
painter->fillRect(option->rect, QBrush(backgroundGradient));
qDebug()<<"YRLY "<<widget->rect()<<" "<<option->rect;
painter->restore();
}
else
{
backgroundGradient.setColorAt(0.0, QColor(Qt::green).lighter(190));
backgroundGradient.setColorAt(1.0, Qt::blue);
painter->fillRect(QRect(table->rect()), QBrush(backgroundGradient));
qDebug()<<"DONT "<<widget->rect()<<" "<<option->rect;
painter->restore();
}
break;
}
default:
QWindowsStyle::drawPrimitive(element, option, painter, widget);
}
}
в этом же варианте происходит полная перерисовка таблицы под один стиль при добавлении новой строки(первая строка красится в красный цвет, вторая же закрашивает первую и себя в синий, 3я закрашивает 1ю 2ю и себя в красный, при удалении происходит эффект, как будто мы удаляем слои и с каждыйм новым слоем открывается тот который закрасили)
вот такая вот проблема