为什么QIcon / QPixmap加载的图像格式应该是png(而不是svg)以二进制显示



我有一个Qt应用程序,我可以在其中加载和显示图标。这是我如何做到这一点的一个独立示例。在main.cpp我有:

Q_INIT_RESOURCE(Icons);
QApplication qapp(argc, argv);
QMainWindow window;
QAction* action = new QAction(QIcon(":/icon.png"), QObject::tr("&Icon"), &window);
QToolBar* tb = window.addToolBar(QObject::tr("Test"));
tb->addAction(action);
window.show();
return qapp.exec();

Icons.qrc为资源文件。

我的CMakeLists.txt包含:

# ...
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL)
set(SOURCES main.cpp)
qt5_add_resources(ICON_RSC Data/Icons.qrc)
add_executable(${PROJECT_NAME} ${SOURCES} ${ICON_RSC})
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::OpenGL)

假设我创建了一个应用程序的二进制文件:我复制生成的exe文件和所有必要的Qt,平台和插件dll它们应该在应用程序文件夹中的位置。如果我使用 icon.png,我的二进制应用程序运行没有问题。

但是,我想使用svg格式。如果我将icon.png替换为icon.svg,应用程序将从源代码编译并运行,但二进制文件不再显示该图标。

我的问题是为什么会发生这种情况?这是否与我的二进制文件夹中缺少库有关(我包含了imageformats文件夹,我可以看到那里qsvg.dll,我还包含了iconengines里面有qsvgicon.dll的文件夹(;还是Qt被设计为不使用svg文件作为图标?

我在Qt5.4上测试了该应用程序,在Windows 7和10上测试了Qt5.5。Qt套件MSVC2010和MSVC2013 - 32位。

你应该链接到Qt5::SVG并包含Qt XML库,参见这里。

您可能可以将两者添加到您的 CMake 文件中:

find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL SVG XML)

target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::SVG Qt5::XML)

相关内容

  • 没有找到相关文章

最新更新