SVG图标不会出现在Qt5中

时间:2015-03-24 13:29:08

标签: c++ qt svg qt5

我在资源文件中使用我的应用程序中的SVG图标,但是当我运行应用程序时,图标不会显示。以相同的方式使用jpg图标可以很好地工作。

2 个答案:

答案 0 :(得分:5)

问题

由于Qt5.1框架已modularized。 很可能你错过了svg模块。该应用程序仍然可以编译而无需抱怨。

解决方案

确保系统上已安装SVG模块并进行链接(使用qmake (Howto),cmake (Howto)或plain make)。如果已成功链接QImageReader::supportedImageFormats()将列出SVG。

答案 1 :(得分:2)

如果你正在使用cmake,你需要这样的东西来链接Svg Qt库。

find_package(Qt5Svg REQUIRED)

target_link_libraries( ${APP_NAME} Qt5::Svg )

一个完整的例子(对不起ManuelSchneid3r)可能是以下一个。

## application name
set( APP_NAME "myapp" )

## project name
project( ${APP_NAME} )

## require a minimum version of CMake
CMAKE_MINIMUM_REQUIRED ( VERSION 2.6 FATAL_ERROR )

## add definitions, compiler switches, etc.
ADD_DEFINITIONS( -Wall -O2 )
SET( CMAKE_CXX_FLAGS -g )

## include (or not) the full compiler output
SET( CMAKE_VERBOSE_MAKEFILE OFF )

# find Qt
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Svg REQUIRED)

include_directories(${Qt5Widgets_INCLUDE_DIRS})
include_directories(${Qt5Core_INCLUDE_DIRS})
include_directories(${Qt5Gui_INCLUDE_DIRS})
include_directories(${Qt5Svg_INCLUDE_DIRS})

# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)

# The AUTOUIC target property controls whether cmake(1) inspects the
# C++ files in the target to determine if they require uic to be run,
# and to create rules to execute uic at the appropriate time.
set(CMAKE_AUTOUIC ON)

## sources
file( GLOB MAIN_SRC *.cpp )
set( SOURCES ${MAIN_SRC} )

## executable
add_executable( ${APP_NAME} ${SOURCES} )

## link
target_link_libraries( ${APP_NAME} Qt5::Widgets Qt5::Svg )