c++ - 如何使用样式表删除 QWizard 中的水平线?

标签 c++ qt user-interface qwizard

我正在处理 QWizard 的样式表,我想删除按钮上方的水平线。

我已经发布了一个最小的例子 here ,这个问题是由 scopchanov 从最小的例子中解决的,但是我的项目中有一些代码行避免了解决方案的工作,所以我在这里发布了另一个问题。

Screenshot

这是我的代码(完整的可构建示例可以从 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 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();
}

正如 scopchanov 所说,我使用了 QPalette 技巧。但是我在 qApp 上定义了一个很大的样式表,这就是我的问题的原因。使用非常小的样式会产生同样的问题。

重现的步骤是在QApplication声明之后添加这一行:

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

我希望有人能帮助我。

最佳答案

要解决此问题,请设置整个应用程序的调色板,而不仅仅是 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();
}

注意:正如我在对链接问题的回答中提到的,如果这个颜色角色被任何其他项目使用,它的颜色也会受到影响。

关于c++ - 如何使用样式表删除 QWizard 中的水平线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52667937/

相关文章:

c++ - 使用 boost::iostreams mapped_file_source 和 filtering_streambuf 解压文件

c++ - std::decay 零长度数组

qt - 是否可以在 Qt 样式表中指定不仅仅是 "regular"和 "bold"版本的字体?

c# - 如何在 Java 中执行 GUI 任务

c++ - 在 ViennaCL 中从 std::vector 转换为 ublas::compressed_matrix

c++ - 传递 std::ifstream 以用作指针

javascript - Qt 5.0 : Exposing C++ methods to Java Script

c++ - #include <windows.h> 导致很多语法错误

javascript - 使用 jQuery 根据更大的父元素输入焦点

java - 如何调整我的图标(图像按钮)以免它们放大?