c – 使用CMake和AUTORCC的Qt资源文件
解:
在add_executable()语句中添加资源文件 问题 (不在add_library()中) 无法设置主窗口图标. 笔记: >当我不使用AUTORCC时,我遇到了一些编译问题: 码 这是我项目的最小化代码.树: |- CMakeLists.txt |- main_window.hpp |- main_window.cpp |- main.cpp |- resources | - resources.qrc | - images | - logo.png main_window.cpp #ifndef MAINWINDOW_HPP #define MAINWINDOW_HPP #include <QMainWindow> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); }; #endif main_window.cpp #include "main_window.hpp" MainWindow::MainWindow() { // i tried ":/images.png",":/resources/images/logo.png",":/logo.png" setWindowIcon(QIcon(":images/logo.png")); } main.cpp中 #include <QApplication> #include "main_window.hpp" int main(int argc,char *argv[]) { QApplication app(argc,argv); app.setOrganizationName("Organization"); app.setApplicationName("Application Example"); MainWindow mainWin; mainWin.show(); return app.exec(); } 的CMakeLists.txt. cmake_minimum_required(VERSION 3.1) project(qt_project) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) find_package(Qt4 4.6 REQUIRED) set(QT_USE_QTGUI TRUE) set(QT_USE_QTXML TRUE) include(${QT_USE_FILE}) add_definitions(${QT_DEFINITIONS}) // NOTE: it would be more convenient to be able to add the // resource file here upon the creation of the library add_library(mylib main_window.cpp) // SOLVED // BEFORE: add_executable(qt_test main.cpp) add_executable(qt_test main.cpp resources/resources.qrc) target_link_libraries(qt_test mylib ${QT_LIBRARIES} ) 资源/ resources.qrc <!DOCTYPE RCC><RCC version="1.0"> <qresource> <file>images/logo.png</file> </qresource> </RCC> 编辑 这是生成的qrc_resources.cxx #include <QtCore/qglobal.h> static const unsigned char qt_resource_data[] = { // /users/ddakop/dev/misc/qt/resources/images/logo.png // ... removed hex data }; static const unsigned char qt_resource_name[] = { // images // ... removed hex data // logo.png // ... removed hex data }; static const unsigned char qt_resource_struct[] = { // : 0x0,0x0,0x2,0x1,// :/images 0x0,// :/images/logo.png 0x0,0x12,}; QT_BEGIN_NAMESPACE extern Q_CORE_EXPORT bool qRegisterResourceData (int,const unsigned char *,const unsigned char *); extern Q_CORE_EXPORT bool qUnregisterResourceData (int,const unsigned char *); QT_END_NAMESPACE int QT_MANGLE_NAMESPACE(qInitResources_resources)() { QT_PREPEND_NAMESPACE(qRegisterResourceData) (0x01,qt_resource_struct,qt_resource_name,qt_resource_data); return 1; } Q_CONSTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qInitResources_resources)) int QT_MANGLE_NAMESPACE(qCleanupResources_resources)() { QT_PREPEND_NAMESPACE(qUnregisterResourceData) (0x01,qt_resource_data); return 1; } Q_DESTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qCleanupResources_resources)) 系统 CentOS-5,Qt-4.8.6,CMake-3.2.1,gcc-4.8.2 解决方法
我想你需要链接qrc_resources生成的文件.
我想你知道下一个信息: http://www.cmake.org/cmake/help/v3.0/manual/cmake-qt.7.html 在哪里可以看到下一行: add_executable(myexe main.cpp resource_file.qrc) 更多信息: http://www.cmake.org/cmake/help/v3.0/prop_tgt/AUTORCC.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |