2

我正在尝试加载 CSS 文件以在整个 Qt 应用程序中进行格式化。目前,我的“stylesheet.css”文件与我构建的 exe(调试和发布)位于同一文件夹中。但是,在运行程序时,它不会产生任何错误,只是输出“test:”,所以它显然没有找到文件,或者我没有正确阅读它?

如果这是一个愚蠢的错误,请原谅我 - 我对 Qt 和 C++ 都很陌生。

#include "mainwindow.h"
#include "qfile.h"
#include "qtextstream.h"
#include <QApplication>
#include <iostream>

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

    QFile styleFile("stylesheet.css");
    styleFile.open(QIODevice::ReadOnly);
    QTextStream textStream(&styleFile);
    QString styleSheet = textStream.readAll();
    styleFile.close();
    program.setStyleSheet(styleSheet);

    std::cout << "test: " << styleSheet.toStdString() << std::endl;

    MainWindow w;
    w.showMaximized();

    return program.exec();
}
4

4 回答 4

4

在深入挖掘之后,事实证明我缺少一个 QRC 文件(我什至不知道它存在)。所以我创建了一个资源 (QRC) 文件,添加了前缀“/style”,然后将我的样式表添加到该前缀。它现在可以完美运行。此外,有一次我将 .css 更改为 .qss (我想我应该提到它,尽管我怀疑它有什么不同)。

这是最终的代码:

#include "mainwindow.h"
#include "qfile.h"
#include "qtextstream.h"
#include <QApplication>

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

    QFile styleFile(":/style/stylesheet.qss");
    if(styleFile.open(QIODevice::ReadOnly))
    {
        QTextStream textStream(&styleFile);
        QString styleSheet = textStream.readAll();
        styleFile.close();
        program.setStyleSheet(styleSheet);
    }

    MainWindow w;
    w.showMaximized();

    return program.exec();
}
于 2013-09-05T16:42:05.593 回答
0

改变

QFile styleFile("stylesheet.css");

QFile styleFile("C:/path/to/stylesheet.css");

您需要为程序传递完整的文件路径才能找到该文件。如果你只给它的名字而不是它所在的目录,程序将只在当前目录中搜索它(不一定是你的 exe 文件的目录),如果它不在那里,它就不会找到它。

于 2013-09-05T07:40:28.697 回答
0

如果你想在你的应用程序中部署这个 CSS 文件,你正在寻找Qt 资源文件支持

于 2013-09-05T13:26:29.737 回答
0

因为你应该取消选中项目下的“影子构建”。并检查项目的路径。并确保 .css 文件位于项目文件夹中

于 2017-10-12T11:13:43.607 回答