QT:使用样式表作为外部文件

QT: Use stylesheet as external file

我有一个用 QT 5.9.5 开发的项目,所以是 C++。我有一个 GUI,我想用外部全局样式表描述小部件的外观。 我正在使用 QTCreator。我添加了一个名为“stylesheet.qss”的通用文件,QTCreator 将其放入“其他文件”目录。我还没有创建资源文件。只有“其他文件”目录中的 qss 文件。 为了调用文件,我在mainwindow.cpp(主窗口是用户界面,mainwindow.ui)中写了下面的代码:

QFile file(":/stylesheet.qss");
file.open(QIODevice::ReadWrite);
QTextStream in(&file);
QString text;
text = in.readAll();
file.close();
setStylesheet(text);

当我 运行 应用程序时,应用程序输出给我以下问题:

QIODevice::read (QFile, ":/stylesheets.qss"): device not open

相反,如果我写:

QFile file("stylesheet.qss");

如果我写:

file.open(QIODevice::ReadOnly);

没有出现该问题。但是,在所有情况下,变量文本都是空的,我无法使用样式表。 检查 file.errorString(),它给出:

"Unknown error"

并检查 file.error(),它给出:

0

有人可以建议我一个解决方案或其他方法来向我的应用程序添加样式表吗? 谢谢, 马可

  1. 在资源 (.qrc) 中添加您的 .qss 文件

  2. 将要添加到 qss 的代码放入 main.cpp 中的程序中:

#include "mainwindow.h"

#include <QApplication>
#include <QFile>

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

    /**
     * Load the application style
     */
    QFile  styleFile(":/Style.qss");

    styleFile.open(QFile::ReadOnly);

    /**
     * Apply the loaded stylesheet
     */
    QString  style(styleFile.readAll());
    a.setStyleSheet(style);

    MainWindow  w;
    w.show();

    return a.exec();
}