Je travaille sur la feuille de style d'un QWizard
et j'aimerais supprimer la ligne horizontale juste au-dessus du bouton poussoir.
J'ai déjà posté un exemple minimal ici, la question a été résolue par scopchanov à partir de l'exemple minimal, mais j'ai quelques lignes de code dans mon projet qui évite que la solution fonctionne, je poste donc une autre question ici.
Voici mon code (l'exemple constructible complet peut être téléchargé à partir de l'essentiel ici< /em>):
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();
}
Comme l'a dit scopchanov, j'ai utilisé l'astuce QPalette
. Mais j'ai une grosse feuille de style définie sur le qApp et c'est la cause de mon problème. L'utilisation d'un style très petit donne le même problème.
L'étape à reproduire est d'ajouter cette ligne après la déclaration du QApplication
:
qApp->setStyleSheet("QLabel { color:black; }");
J'espère que quelqu'un pourrait m'aider.
1 réponse
Pour résoudre ce problème, définissez la palette de l'ensemble de l'application, au lieu de simplement la classe LicenseWizard
, comme ceci :
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();
}
Remarque : Comme mentionné dans ma réponse à la question liée, si ce rôle de couleur est utilisé par un autre élément, sa couleur serait également affectée.
Questions connexes
Questions liées
De nouvelles questions
c++
C ++ est un langage de programmation à usage général. Il a été conçu à l'origine comme une extension de C et a une syntaxe similaire, mais c'est maintenant un langage complètement différent. Utilisez cette balise pour les questions sur le code (à être) compilé avec un compilateur C ++. Utilisez une balise spécifique à la version pour les questions liées à une révision standard spécifique [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] ou [C ++ 23], etc. .