Неожиданный токен `: 'при определении типа параметра сигнала QML - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь ознакомиться с QML. Я следую этому учебнику 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 ( РС V C 32bit)

1 Ответ

2 голосов
/ 07 апреля 2020

Этот синтаксис является новым в Qt 5.14. Он соответствует синтаксису TypeScript и пути к go для предстоящего QML 3. В более старых версиях Qt появляется сообщение об ошибке, которое вы упомянули. Классический и до сих пор поддерживаемый синтаксис будет иметь вид

signal clicked(color cellColor)

Синтаксис name: type даже не упоминается в документации Qt о сигналах QML .

...