无法在 Qt C++ 程序中加载 qrc 文件
can't load qrc files in Qt C++ program
我正在尝试使用 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
我在 QtCreator 中使用 Arch linux 和 gcc (GCC) 7.3.1。我是 cmake 和 Qt 的新手。
请在您的 makefile 中添加您的 QRC 资源。
RESOURCES += resources.qrc
将资源添加到 add_executable()
add_executable(${PROJECT_NAME} main.cpp calculator.cpp resources.qrc) // added qrc
我正在尝试使用 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
我在 QtCreator 中使用 Arch linux 和 gcc (GCC) 7.3.1。我是 cmake 和 Qt 的新手。
请在您的 makefile 中添加您的 QRC 资源。
RESOURCES += resources.qrc
将资源添加到 add_executable()
add_executable(${PROJECT_NAME} main.cpp calculator.cpp resources.qrc) // added qrc