无法在Qt C ++程序中加载qrc文件

时间:2018-04-27 04:10:12

标签: c++ qt cmake qt5 rcc

我正在尝试使用qrc将css文件加载到程序中。但是在运行时出现以下错误: -

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

我正在使用Cmake。这是我项目的结构: -

.
├── calculator.cpp
├── calculator.h
├── calculator.ui
├── CMakeLists.txt
├── CMakeLists.txt.user
├── css
│   └── stylesheet.qss
├── main.cpp
└── resources.qrc

cmake文件: -

cmake_minimum_required(VERSION 3.9)

project(Calculator)

set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -Wall -Wpedantic -Wextra -std=gnu++14")

find_package(Qt5Widgets REQUIRED)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)


add_executable(${PROJECT_NAME} main.cpp calculator.cpp )
target_link_libraries(Calculator Qt5::Widgets)

这是使用qrc文件的main.cpp文件: -

#include <QApplication>
#include <QFile>
#include "calculator.h"
#include <QtDebug>

int main(int argc,char **argv)
{
    QApplication *app= new QApplication(argc,argv);
//  Q_INIT_RESOURCE(resources);

    QFile css(":/css/stylesheet.qss");
    if(css.open(QIODevice::ReadOnly ))
    {
        app->setStyleSheet(css.readAll());
        css.close();
    }else
    {
        qDebug("Failed") ;
        qDebug(css.readAll());
    }

    Calculator *cal = new Calculator(nullptr);
    cal->show();

    return  app->exec();

}

这是resources.qrc文件: -

<RCC>
    <qresource prefix="/">
        <file>css/stylesheet.qss</file>
    </qresource>
</RCC>

当我尝试跑步时,我得到这个输出: -

qt5ct: using qt5ct plugin
Failed
QIODevice::read (QFile, ":/css/stylesheet.qss"): device not open

我正在使用Arch linux和gcc(GCC)7.3.1和QtCreator。我是cmake和Qt的新手。

2 个答案:

答案 0 :(得分:3)

将资源添加到add_executable()

add_executable(${PROJECT_NAME} main.cpp calculator.cpp resources.qrc) // added qrc

答案 1 :(得分:1)

请在您的makefile中添加您的QRC资源。

RESOURCES += resources.qrc