mat*_*eri 4 qt svg qt-creator qml qtquick2
我写了一个简单的QML ui,它使用了一些svg图像。当我在桌面上执行该应用程序时,一切都很好,将显示UI并在其上显示svg图像。当我尝试在嵌入式设备(运行Windows嵌入式设备)上执行应用程序时,会发生问题。在这种情况下,显示了UI,但未显示svg图像,并且在控制台上,我收到以下消息: QML BorderImage:无效的图像数据:my_image.svg
正确显示了png图像。
我在Internet上研究了这个问题,并且发现很多ppl通过将svg和其他依赖项添加到.pro文件来解决了该问题。不幸的是,这对我来说没有帮助。这些是我的.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
Run Code Online (Sandbox Code Playgroud)
编辑:所有svg图像都位于资源文件内
为了显示SVG图像,我做了以下工作:
添加svg到.pro文件:
QT += svg
Run Code Online (Sandbox Code Playgroud)
确保我Image的尺寸:
height: 400
width: 400
Run Code Online (Sandbox Code Playgroud)
确保将源SVG设置为大小:
sourceSize.width: 100
sourceSize.height: 100
Run Code Online (Sandbox Code Playgroud)
就这样。
当我忘记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
Run Code Online (Sandbox Code Playgroud)
修复QML之后,仿真器仍在抱怨:
E/OpenGLRenderer( 4435): GL error: GL_INVALID_VALUE
Run Code Online (Sandbox Code Playgroud)
我必须重新启动模拟器才能使其再次显示某些内容。
提示:为了获得正确的视觉质量,请不要将尺寸设置sourceSize得太小Image(由于x4系数,上面的示例可能会产生难看的结果)。
(我正在Android模拟器上使用Qt 5.7进行测试)。
| 归档时间: |
|
| 查看次数: |
5406 次 |
| 最近记录: |