定义 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 中甚至没有提到。