Не удалось установить значок главного окна.
Примечания:
- Когда я не использую AUTORCC, у меня возникают проблемы с компиляцией:
main_window.cpp
Код: Выделить всё
QtCore/qglobal.h: no such file or directory. Но я предпочитаю AUTORCC как более современный подход CMake. [*]Без AUTORCC (другой CMakeLists.txt, чем предоставленный) и Qt- 4.6.2 текущий код работал. разный CMakeLists.txt) [/list] КодЭто минимизированный код моего проекта. Дерево: |- CMakeLists.txt |- main_window.hpp |- main_window.cpp |- main.cpp |- resources | - resources.qrc | - images | - logo.pngmain_window.cppКод: Выделить всё
#ifndef MAINWINDOW_HPP #define MAINWINDOW_HPP #include class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); }; #endifmain.cppКод: Выделить всё
#include "main_window.hpp" MainWindow::MainWindow() { // i tried ":/images.png", ":/resources/images/logo.png", ":/logo.png" setWindowIcon(QIcon(":images/logo.png")); }CMakeLists.txt.Код: Выделить всё
#include #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();resources/resources.qrcКод: Выделить всё
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}) add_library(mylib main_window.cpp) add_executable(qt_test main.cpp) target_link_libraries(qt_test mylib ${QT_LIBRARIES} )ИзменитьКод: Выделить всё
images/logo.png
Это сгенерированный файл qrc_resources.cxxСистемаКод: Выделить всё
#include 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,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1, // :/images 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2, // :/images/logo.png 0x0,0x0,0x0,0x12,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, }; QT_BEGIN_NAMESPACE extern Q_CORE_EXPORT bool qRegisterResourceData (int, const unsigned char *, const unsigned char *, const unsigned char *); extern Q_CORE_EXPORT bool qUnregisterResourceData (int, const unsigned char *, const unsigned char *, 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_struct, qt_resource_name, 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
Подробнее здесь: https://stackoverflow.com/questions/294 ... nd-autorcc