【问题标题】:Loading .qss theme from qrc file从 qrc 文件加载 .qss 主题
【发布时间】:2017-08-08 12:43:22
【问题描述】:

我正在尝试使用qdarkstyle 主题。 我遵循了代码,但我似乎无法加载样式表。这是我在 main.cpp 中加载代码的方式:

QFile f(":qdarkstyle/style.qss");
if (!f.exists())
{
    printf("Unable to set stylesheet, file not found\n");
}
else
{
    f.open(QFile::ReadOnly | QFile::Text);
    QTextStream ts(&f);
    qApp->setStyleSheet(ts.readAll());
}

但 exists() 总是错误的。文件夹 qdarkstyle 在我的主源的子目录中

我的项目资源如下所示:

我尝试了以下调用:

QFile f(":qdarkstyle/style.qss");
QFile f("://qdarkstyle/style.qss");
QFile f(":/qdarkstyle/style/qdarkstyle/style.qss");

但我总是存在总是假的。关于我做错了什么的任何想法

添加我的 .pro 文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = MediaManagerV2
TEMPLATE = app

DEFINES += QT_DEPRECATED_WARNINGS


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

RESOURCES += \
    resources.qrc \
    qdarkstyle/style.qrc

来源链接

https://drive.google.com/file/d/0BwXCsqWT3wkXV1dYNzF1dFM4dTQ/view?usp=sharing

修复

修改后的代码

QApplication a(argc, argv);
MainWindow w;
w.show();

QFile f(":/qdarkstyle/style.qss");
if (!f.exists())
{
    printf("Unable to set stylesheet, file not found\n");
}
else
{
    f.open(QFile::ReadOnly | QFile::Text);
    QTextStream ts(&f);
    a.setStyleSheet(ts.readAll());
}

基本上把 show() 移到上面

【问题讨论】:

  • 你可以展示你的 .pro 文件。
  • 您已将 .qrc 文件添加到您的 .pro 中:RESOURCES += qdarkstyle/style.qrc
  • 我已经在上面更新并添加了我的 .pro 文件
  • 我已经尝试过了,我没有遇到任何问题,如果您通过 github、dropbox 或类似方式分享您的项目,我可以提供帮助。
  • 我实际上是这样做的。它只是一个新项目,所以它非常小。谢谢

标签: c++ qt qt5


【解决方案1】:

您已将.qrc 文件添加到您的.pro:

RESOURCES += qdarkstyle/style.qrc

在调用样式表之前移动show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 2012-12-13
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    相关资源
    最近更新 更多