定义 QML 信号参数类型时出现意外的 Token `:'
Posted
技术标签:
【中文标题】定义 QML 信号参数类型时出现意外的 Token `:\'【英文标题】:Unexpected Token `:' while defining QML signal parameter type定义 QML 信号参数类型时出现意外的 Token `:' 【发布时间】:2020-04-07 08:25:30 【问题描述】:我正在尝试熟悉 QML。我正在关注thisQt 提供教程,但遇到了问题。
问题:
在创建Cell.qml 文件时,我需要创建一个点击信号,其中名为cellColor
的单个参数被定义为color
类型(如果我理解正确)
../QMLTest/Cell.qml:6 意外令牌`:'
来自Cell.qml
的代码 sn-p 是:
import QtQuick 2.0
Item
id: container
property alias cellColor: rectangle.color
signal clicked(cellColor: color) <-----Problem - line 6
width: 40; height: 25
//...
由于 QML 使用 javascript,我想我会试试这个,它有效:
signal clicked(var cellColor)
一个明显的缺点是你丢失了定义的类型(基于我之前的假设)。
问题:
为什么提供的信号代码不起作用,使用var
关键字而不是定义类型有什么缺点吗?
更新
在回答被接受后添加。
我还应该提到,我正在使用 Qt Creator 4.10.0 和 Qt 5.13.1 (MSVC 32bit)
【问题讨论】:
【参考方案1】:这种语法是 Qt 5.14 中的新语法。它遵循 TypeScript 语法和即将推出的 QML 3 的方法。对于较旧的 Qt 版本,人们会收到您提到的错误消息。经典且迄今为止仍受支持的语法是
signal clicked(color cellColor)
Qt documentation about QML signals 中甚至还没有提到 name: type
语法。
【讨论】:
以上是关于定义 QML 信号参数类型时出现意外的 Token `:'的主要内容,如果未能解决你的问题,请参考以下文章
SyntaxError:编译 ejs 时出现意外的 token.ejs