Как удалить горизонтальную линию в QWizard с помощью таблицы стилей?

Я работаю над таблицей стилей QWizard и я хотел бы удалить горизонтальную линию чуть выше кнопки.

Я уже выложил минимальный пример Вот, вопрос был решен Скопчановым из минимального примера, но у меня есть несколько строк кода в моем проекте, которые избегают решения, поэтому я выкладываю здесь другой вопрос.

Скриншот

Вот мой код (полный пример сборки можно скачать из гист Вот):

licensewizard.h

#include <QWizard>

class LicenseWizard : public QWizard {
Q_OBJECT
public:
LicenseWizard(QWidget *parent = 0);
};

licensewizard.cpp

#include <QApplication>
#include <QtWidgets>
#include "licensewizard.h"
LicenseWizard::LicenseWizard(QWidget *parent) : QWizard(parent) {
setWizardStyle(ModernStyle);

// solution from @scopchanov https://stackoverflow.com/a/52541248/8570451
QPalette p(palette());
p.setColor(QPalette::Mid, p.color(QPalette::Base));
setPalette(p);
}

int main(int argc, char *argv[]) {
QApplication app(argc, argv);

// this line breaks @scopchanov solution.
// replace QLabel by QPushButton, or anything else... still broken.
qApp->setStyleSheet("QLabel { color:black; }");

LicenseWizard wizard;
wizard.show();

return app.exec();
}

Как сказал Скопчанов, я использовал QPalette трюк. Но у меня есть большая таблица стилей, определенная в qApp, и это является причиной моей проблемы. Использование очень маленького стиля дает ту же проблему.

Шаг к воспроизведению — добавить эту строку после объявления QApplication:

qApp->setStyleSheet("QLabel { color:black; }");

Я надеюсь, что кто-то может мне помочь.

3

Решение

Чтобы это исправить, установите палитру всего приложения, а не только LicenseWizard класс, как это:

LicenseWizard::LicenseWizard(QWidget *parent) : QWizard(parent) {
setWizardStyle(ModernStyle);
}

int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QPalette p(qApp->palette());

p.setColor(QPalette::Mid, p.color(QPalette::Base));
qApp->setPalette(p);
qApp->setStyleSheet("QLabel { color:black; }");

LicenseWizard wizard;
wizard.show();

return app.exec();
}

Замечания: Как упоминалось в моем ответе на связанный вопрос, если эта цветовая роль используется каким-либо другим элементом, это также повлияет на его цвет.

2

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

Других решений пока нет …

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