定义QML信号参数类型时出现意外令牌':'

问题描述 投票:0回答:1

我正在尝试使自己熟悉QML。我正在关注this Qt提供的教程,但是遇到了问题。

问题:

[创建Cell.qml文件时,我需要创建一个单击的信号,其中将名为cellColor的单个参数定义为color类型(如果我正确理解的话]]

../ QMLTest / Cell.qml:6意外令牌':'

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 32bit)一起使用

c++ qt qml qtquick2
1个回答
1
投票

此语法在Qt 5.14中是新的。它遵循TypeScript语法以及即将推出的QML 3的方法。使用较旧的Qt版本,您将得到您提到的错误消息。目前仍受支持的经典语法是

signal clicked(color cellColor)

name: type甚至都没有提到Qt documentation about QML signals语法。

© www.soinside.com 2019 - 2024. All rights reserved.