QML - 不支持命令式代码

Posted

技术标签:

【中文标题】QML - 不支持命令式代码【英文标题】:QML - Imperative code not supported 【发布时间】:2014-01-24 05:56:32 【问题描述】:

有人可以评论一下对于QML,任何命令式javascript 代码都不会执行,除非它是extra component 的一部分。当我在我的 QML 中包含以下代码时,我遇到了这样的问题:

function qmlSlot(text)
    page.data=text
    if(page.data==="received")
        page.color="black";

Qt 设计器冻结并显示以下警告:

Qt Quick Designer 不支持命令式代码

我读到构建 qmlpuppet 会在构建它的 Qt 的 /bin 目录中安装一个用于渲染组件的可执行文件。如果 qmlpuppet 在 /bin 目录中,Qt Quick Designer 检查当前项目的 Qt。如果是,则使用 Qt 版本提供的 qmlpuppet,而不是 Qt Creator 本身提供的。在我的情况下,我没有使用 Qt 静态二进制安装,而是从源代码构建 Qt,因此生成了 qmlpuppet 可执行文件并且已经位于:

/usr/local/Qt-5.2.1/qtcreator/bin
-rwxr-xr-x  1 qml2puppet
-rwxr-xr-x  1 qmlpuppet

因此,可执行 qmlpuppet 被放置在预期可以找到的位置,但这个烦人的消息仍然继续。

当我想使用 Qt Designer 编辑前端 QML 时,我目前采取的解决方法是注释掉任何所谓的“命令式代码”。然后取出这些 cmets 以再次激活“命令式代码”。但这很烦人,尽管代码按我预期的方式编译和工作。

那么,我应该担心这个警告吗?无论如何,有什么办法可以摆脱这个问题,因为它冻结了 Qt 设计器?

【问题讨论】:

看看这个qt-project.org/forums/viewthread/25270 @Apokal - 谢谢!我已经添加了一些额外的信息和链接。 【参考方案1】:

这是目前报告的 QtCreator 错误:

https://bugreports.qt-project.org/browse/QTCREATORBUG-10940?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab https://bugreports.qt.io/browse/QTCREATORBUG-10940

所以不要担心警告,它会被修复

【讨论】:

以上是关于QML - 不支持命令式代码的主要内容,如果未能解决你的问题,请参考以下文章

网页版QML

如何评价QML?

QML学习Basic Types

如何加快20-30%的QML加载时间?

为啥 Qt Entity 类型不支持 states 属性?

Qt Quick ui 表单不支持函数