Qml 在运行时可以工作,但不会在 Qt 设计器中加载照片

Posted

技术标签:

【中文标题】Qml 在运行时可以工作,但不会在 Qt 设计器中加载照片【英文标题】:Qml works when run but will not load photos in Qt designer 【发布时间】:2020-04-08 18:26:29 【问题描述】:

在处理一个小型 qml 项目时,我发现了这种行为,我不确定我是否做错了什么,或者这是否就是这样。

我创建了一个简单的测试文件 Test.qml 以及 main.qml 和 main.cpp

import QtQuick 2.0

Item 
width: 212
height: 212
Image 
    id: image
    x: 0
    y: 22
    width: 212
    height: 168
    source: "images/PaperSpeed.png"
    fillMode: Image.PreserveAspectFit



上面源中链接的图片

在设计器中显示实际图像

但运行时无法显示图片

我继续将源更改为 qrc URL:

source: "qrc:/img/images/PaperSpeed.png"

但现在它无法显示在设计器中

而是在运行时显示

我发现更奇怪的地方图片在 Test.qml 文件中显示在设计器中,但在两个源案例的 main.qml 文件中没有显示在设计器中

我的 .pro 文件:

QT += quick

CONFIG += c++11

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
    main.cpp

RESOURCES += qml.qrc

QML_IMPORT_PATH =


QML_DESIGNER_IMPORT_PATH =

qnx: target.path = /tmp/$$TARGET/bin
 else: unix:!android: target.path = /opt/$$TARGET/bin
 !isEmpty(target.path): INSTALLS += target

和qrc文件:

<RCC>
    <qresource prefix="/">
        <file>Thermostat.qml</file>
        <file>main.qml</file>
        <file>Test.qml</file>
    </qresource>
    <qresource prefix="/img">
        <file>images/PaperSpeed.png</file>
    </qresource>
    </RCC>

当我尝试导入像 QtQuickContols 这样的新模块时,这似乎确实发生了,最终摆脱了它,但问题仍然存在。

我尝试过使用 QML 仿真层并在 qrc 中移动文件。有人对我可以尝试什么或可能发生什么有任何想法吗?

如有任何格式问题,请提前道歉!

【问题讨论】:

【参考方案1】:

我有同样的问题。如果我将图像添加到窗口,它可以解决。 检查下面的例子。如果我从窗口中删除测试图像,我会得到相同的结果。

【讨论】:

最好将代码发布为答案中的实际文本而不是图像。这样 OP 可以很容易地复制粘贴并尝试一下......【参考方案2】:

对于仍在关注此问题的任何人,对我有用的是将 UI 元素分成 .ui.qml 并将后端逻辑分成 .qml 文件。当在设计器中打开 .ui.qml 文件时,这可以更好地加载 UI 元素和图片。

【讨论】:

以上是关于Qml 在运行时可以工作,但不会在 Qt 设计器中加载照片的主要内容,如果未能解决你的问题,请参考以下文章

在另一台电脑上运行 qt qml 应用程序

Qt/QML SwipeDelegate 在移动设备(Android、iOS)上无法正常工作

更改后,QT QML资源文件不会重新编译

如何使组件在表单设计器中消失?

Qt 设计器和 Dock 小部件

Qt5.4mingwRC1 的 QtCreator 的 qml 文件和设计器选项卡出现问题