定义 QML 信号参数类型时意外的标记 ‘:’
Unexpected Token `:' while defining QML signal parameter type
我正在尝试熟悉 QML。我正在关注 this Qt 提供的教程,但是 运行 遇到了问题。
问题:
在创建 Cell.qml 文件时,我需要创建一个点击信号,其中名为 cellColor
的单个参数被定义为 color
类型(如果我理解正确的话)
../QMLTest/Cell.qml:6 Unexpected token `:'
来自 Cell.qml
的相关代码片段是:
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 32 位)
此语法是 Qt 5.14 中的新语法。它遵循 TypeScript 语法和即将推出的 QML 3 的方式。对于较旧的 Qt 版本,人们会收到您提到的错误消息。经典的和迄今为止仍然受支持的语法是
signal clicked(color cellColor)
name: type
语法在 Qt documentation about QML signals 中甚至没有提到。
我正在尝试熟悉 QML。我正在关注 this Qt 提供的教程,但是 运行 遇到了问题。
问题:
在创建 Cell.qml 文件时,我需要创建一个点击信号,其中名为 cellColor
的单个参数被定义为 color
类型(如果我理解正确的话)
../QMLTest/Cell.qml:6 Unexpected token `:'
来自 Cell.qml
的相关代码片段是:
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 32 位)
此语法是 Qt 5.14 中的新语法。它遵循 TypeScript 语法和即将推出的 QML 3 的方式。对于较旧的 Qt 版本,人们会收到您提到的错误消息。经典的和迄今为止仍然受支持的语法是
signal clicked(color cellColor)
name: type
语法在 Qt documentation about QML signals 中甚至没有提到。