Причина
На эту линейку QWizardRuler *bottomRuler
таблица стилей не влияет, потому что QWizardRuler
наследует QWizardHeader
, и линия рисуется вQWizardHeader::paintEvent
:
void QWizardHeader::paintEvent(QPaintEvent * /* event */)
{
QPainter painter(this);
painter.drawPixmap(0, 0, bannerPixmap);
int x = width() - 2;
int y = height() - 2;
const QPalette &pal = palette();
painter.setPen(pal.mid().color());
painter.drawLine(0, y, x, y);
painter.setPen(pal.base().color());
painter.drawPoint(x + 1, y);
painter.drawLine(0, y + 1, x + 1, y + 1);
}
Решение
Поскольку эту линейку удалить нельзя, я бы посоветовал вам скрыть ее.
реализация QWizardHeader::paintEvent
дает представление о том, как это сделать, то есть путем установки роли цвета , используемой для рисования линии, QPalette::Mid
, в соответствующий цвет, который смешивается с фоном, QPalette::Base
.
Примечание: Если эта цветовая роль используется любым другим элементом, его цвет также будет изменен.
Пример
ВотЯ подготовил для вас пример того, как можно реализовать предложенное решение:
Заменить
for (auto *widget : this->findChildren<QWidget *>())
{
widget->setStyleSheet("background:none; border:none; margin:0; padding:0;");
}
на
QPalette p(palette());
p.setColor(QPalette::Mid, p.color(QPalette::Base));
setPalette(p);
Результат
ЗаданноеПример дает следующий результат: