【发布时间】:2013-08-21 14:24:31
【问题描述】:
我刚刚开始使用 cmake 作为构建系统的 Qt5 项目。到目前为止,这工作得很好,但是我想从 qrc 文件加载图标时遇到问题。
项目结构:
CMakeLists.txt
-- icons/
CMakeLists.txt
icons.qrc
locked.png
-- src/
CMakeLists.txt
source files...
顶级 CMakeLists.txt:
cmake_minimum_required(VERSION 2.8.11) #2.8.11 provides an easy way to build with qt5
project(fluchOmat)
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
# Find the QtWidgets library. This has dependencies on QtGui and QtCore!
find_package(Qt5Widgets REQUIRED)
# Find the QtMultimedia module
find_package(Qt5Multimedia REQUIRED)
add_subdirectory(icons)
add_subdirectory(src)
图标中的 CMakeLists.txt/
set(RESOURCE
${CMAKE_CURRENT_SOURCE_DIR}/icons.qrc
)
qt5_add_resources(RESOURCE_ADDED ${RESOURCE})
icons/中的icons.qrc
<RCC>
<qresource prefix="/">
<file alias="locked">locked.png</file>
</qresource>
</RCC>
src/中的CMakeLists.txt(重要部分)
add_executable(fluchOmat ${SOURCES} ${HEADERS} ${fluchOmat_FORMS} ${RESOURCES_ADDED})
一些示例代码
QPixmap pm(":/locked.png");
qDebug("Width: " + pm.width());
什么都不返回,所以显然这不起作用。
Qt5 和 cmake 的资源并不多。谁能帮我这个?这是一个cmake问题吗?例如,我不确定 qt5_add_resources 是否在正确的位置。我的qrc文件错了吗?
非常感谢任何帮助!
【问题讨论】:
-
由于你的图片文件在资源中有别名,如果你使用 QPixmap(pm(":/locked"); 没有文件扩展名,它仍然会失败吗?
-
是的,使用别名也有同样的问题。
-
嗯,资源文件和图像请求看起来不错,所以我认为问题在于 cmake 如何包含资源文件。
标签: c++ qt cmake qt-creator qt5