代码之家  ›  专栏  ›  技术社区  ›  user9392253

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

  •  1
  • user9392253  · 技术社区  · 8 年前

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

    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文件的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();
    
    }
    

    这里是资源。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 回复  |  直到 7 年前
        1
  •  3
  •   Joseph D.    8 年前

    将资源添加到 add_executable()

    add_executable(${PROJECT_NAME} main.cpp calculator.cpp resources.qrc) // added qrc
    
        2
  •  1
  •   Joseph D.    8 年前

    请在makefile中添加QRC资源。

    RESOURCES += resources.qrc
    
    推荐文章