我正在尝试使自己熟悉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)一起使用
此语法在Qt 5.14中是新的。它遵循TypeScript语法以及即将推出的QML 3的方法。使用较旧的Qt版本,您将得到您提到的错误消息。目前仍受支持的经典语法是
signal clicked(color cellColor)
name: type
甚至都没有提到Qt documentation about QML signals语法。