gpt4 book ai didi

linux - Qt5 linux如何设置窗口图标图片

转载 作者:太空狗 更新时间:2023-10-29 11:17:57 27 4
gpt4 key购买 nike

我有一个 UI,我在 Qt 设计器中设计并用 C++ 编写了代码。我正在使用 catkin ,这只是 cmake,用于构建我的项目。目前当程序启动时,应用程序图标看起来像,enter image description here.我想让它成为我指定的图像,但一直无法弄清楚如何让它工作。

我的项目目录结构如下所示

package
|--CMakeLists.txt
|--src
|--main.cpp
|--MainWindow.cpp
|--resources
|--images
|--kitty.png
|--icons.qrc
|--include
|--MainWindow.hpp
|--ui
|--MainWindow.ui

我的 CMakeLists.txt 文件看起来像,

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 a 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")

编译我的代码时,编译器会生成一个 qrc_icons.cpp.o 对象,但是当我运行可执行文件时,该图标不会显示。我的 icons.qrc 文件看起来像,

<!DOCTYPE RCC>
<RCC version="1.0">
<qresource prefix="/Icons">
<file alias="kitty">images/kitty.jpg</file>
</qresource>
</RCC>

我还尝试在 MainWindow.h 中添加以下内容,

QApplication myApp(argc, argv);
QIcon appIcon;
appIcon.addFile(":/Icons/kitty");
myApp.setWindowIcon(appIcon);

这编译得很好,但仍然没有图标。感觉我已经尝试了所有方法都没有运气,感谢您的帮助!

最佳答案

来自Qt Resource System文档:

Note that the listed resource files must be located in the same directory as the .qrc file, or one of its subdirectories.

所以你需要一个像这样的目录结构:

|--images
|--images
|--kitty.png
|--icons.qrc

更新:

您还应该咨询Setting the Application Icon在 Qt 文档中确保您处理任何特定于平台的问题。

关于linux - Qt5 linux如何设置窗口图标图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36241303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com