我编写了一个简单的 QML ui,它使用一些 svg 图像。
当我在桌面上执行该应用程序时,一切都很好,显示了 UI 以及上面的 svg 图像。
当我尝试在嵌入式设备(运行嵌入式 Windows)上执行应用程序时,会出现问题。在这种情况下,会显示 UI,但不会显示 svg 图像,并且在控制台上我收到以下消息:QML BorderImage:无效的图像数据:my_image.svg
png 图像会正确显示。
我在互联网上研究了这个问题,发现很多人通过向 .pro 文件添加 svg 和其他依赖项来解决这个问题。
不幸的是,这对我的情况没有帮助。
这些是我的 .pro 文件的内容:
TEMPLATE = app
QT += qml quick widgets svg xml gui core
QTPLUGIN += qsvg
SOURCES += main.cpp \
SignalProcessor.cpp \
PopupMode.cpp \
BasicToolbarModel.cpp
RESOURCES += qml.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Default rules for deployment.
include(deployment.pri)
HEADERS += \
SignalProcessor.h \
PopupMode.h \
BasicToolbarModel.h
CONFIG += qmltestcase
QUICK_TEST_SOURCE_DIR += Tests
DISTFILES += \
qml/main.qml \
qml/CustomToolBar.qml \
qml/components/BatteryStatus.qml \
qml/components/ImageButton.qml \
qml/components/Popup.qml \
qml/components/WifiStatus.qml \
qml/pages/PlayButtonView.qml \
qml/pages/StopButtonView.qml \
qml/tests/tst_CustomToolBar.qml \
qml/tests/tst_WifiStatus.qml \
scripts/Utils.js
编辑:所有 svg 图像都位于资源文件内
为了显示 SVG 图像,我执行了以下操作:
Added svg
to the .pro
file :
QT += svg
确保我的Image
有一个尺寸:
height: 400
width: 400
确保我设置了源 SVG 的大小:
sourceSize.width: 100
sourceSize.height: 100
就这样。
当我忘记 QML 文件中的内容时,我会收到如下警告:
W/libnotification.so( 3800): (null):0 ((null)): QOpenGLShaderProgram: could not create shader program
W/libnotification.so( 3800): (null):0 ((null)): QOpenGLShader: could not create shader
修复 QML 后,模拟器仍然抱怨:
E/OpenGLRenderer( 4435): GL error: GL_INVALID_VALUE
我必须重新启动模拟器才能让它再次显示某些内容。
提示:为了获得正确的视觉质量,请勿设置sourceSize
与Image
大小(由于 x4 因素,上面的示例可能会给出丑陋的结果)。
(我正在 Android 模拟器上使用 Qt 5.7 进行测试)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)