如何使用样式表删除 QWizard 中的水平线?
How to remove the horizontal line in a QWizard with a stylesheet?
我正在研究 QWizard
的样式sheet,我想删除按钮上方的水平线。
我已经post编辑了一个最小示例,scopchanov 从最小示例中解决了这个问题,但是我的项目中有一些代码行避免了解决方案工作,所以我 post 这里还有一个问题。
这是我的代码(完整的可构建示例可以从 gist here 下载):
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
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();
}
正如 scopchanov 所说,我使用了 QPalette
技巧。但是我在 qApp 上定义了一个很大的样式 sheet,这就是我的问题的原因。使用非常小的样式会出现同样的问题。
重现的步骤是在QApplication
声明后添加这一行:
qApp->setStyleSheet("QLabel { color:black; }");
希望有人能帮助我。
要解决此问题,请设置整个应用程序的调色板,而不仅仅是 LicenseWizard
class,如下所示:
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();
}
注意:正如我对链接问题的回答中提到的,如果这个颜色角色被任何其他项目使用,它的颜色也会受到影响。
我正在研究 QWizard
的样式sheet,我想删除按钮上方的水平线。
我已经post编辑了一个最小示例
这是我的代码(完整的可构建示例可以从 gist here 下载):
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
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();
}
正如 scopchanov 所说,我使用了 QPalette
技巧。但是我在 qApp 上定义了一个很大的样式 sheet,这就是我的问题的原因。使用非常小的样式会出现同样的问题。
重现的步骤是在QApplication
声明后添加这一行:
qApp->setStyleSheet("QLabel { color:black; }");
希望有人能帮助我。
要解决此问题,请设置整个应用程序的调色板,而不仅仅是 LicenseWizard
class,如下所示:
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();
}
注意:正如我对链接问题的回答中提到的,如果这个颜色角色被任何其他项目使用,它的颜色也会受到影响。