i have ui have designed in qt designer , have written code in c++. using catkin, cmake, build project. when program launched, application icon looks like, .i have image specify, have been unable figure out how work.
my project directory structure looks following
package |--cmakelists.txt |--src |--main.cpp |--mainwindow.cpp |--resources |--images |--kitty.png |--icons.qrc |--include |--mainwindow.hpp |--ui |--mainwindow.ui
my cmakelists.txt file looks like,
cmake_minimum_required(version 2.8.7) project(shared_memory_transport_sliderboard) find_package(catkin required) find_package(qt5widgets required) set(cmake_cxx_flags "${cmake_cxx_flags} ${qt5widgets_executable_compile_flags}") add_definitions(${qt5widgets_definitions}) set(includes_dir ${project_source_dir}/include) set(sources_dir ${project_source_dir}/src) catkin_package( include_dirs ${includes_dir} depends qt5widgets ) # c++11 include(checkcxxcompilerflag) check_cxx_compiler_flag("-std=c++0x" compiler_supports_cxx0x) if(compiler_supports_cxx0x) set(cmake_cxx_flags "${cmake_cxx_flags} -std=c++0x") else() message(fatal_error "the compiler ${cmake_cxx_compiler} has no c++0x support. please use different c++ compiler.") endif() include_directories( ${cmake_current_binary_dir} ${includes_dir} ${catkin_include_dirs} ${qt5widgets_include_dirs} ) set(qt_forms ui/mainwindow.ui ) set(qt_moc ${includes_dir}/${project_name}/mainwindow.h ) set(qt_sources src/mainwindow.cpp ) qt5_wrap_cpp(qt_moc_hpp ${qt_moc}) qt5_wrap_ui(qt_forms_hpp ${qt_forms}) qt5_add_resources(ui_resources ${project_source_dir}/resources/icons.qrc) add_executable(smt_sliderboard src/main.cpp ${qt_sources} ${qt_moc_hpp} ${qt_forms_hpp} ${ui_resources}) target_link_libraries(smt_sliderboard ${catkin_libraries} qt5::widgets) install(targets smt_sliderboard archive destination ${catkin_package_lib_destination} library destination ${catkin_package_lib_destination} runtime destination ${catkin_package_bin_destination} ) install(directory include/${project_name}/ destination ${catkin_package_include_destination} files_matching pattern "*.h")
when compiling code compiler generate qrc_icons.cpp.o
object, when run executable icon doesn't show up. icons.qrc file have looks like,
<!doctype rcc> <rcc version="1.0"> <qresource prefix="/icons"> <file alias="kitty">images/kitty.jpg</file> </qresource> </rcc>
i have tried adding following in mainwindow.h,
qapplication myapp(argc, argv); qicon appicon; appicon.addfile(":/icons/kitty"); myapp.setwindowicon(appicon);
and compiles fine, still no icon. feel have tried no luck, help!
from qt resource system docs:
note listed resource files must located in same directory .qrc file, or 1 of subdirectories.
so need directory structure like:
|--images |--images |--kitty.png |--icons.qrc
update:
you should consult setting application icon in qt docs make sure deal platform-specific issues.
Comments
Post a Comment