Russian Qt Forum

Qt => Qt Quick => Тема начата: xintrea от Август 07, 2018, 20:10



Название: Наличие и отсутствие двоеточия: поясните за синтаксис QML
Отправлено: xintrea от Август 07, 2018, 20:10
Прочитав документацию вот тут:

http://doc.qt.io/qt-5/qml-coordinate.html

Написал такой код:

Код:
Item {
    id: root

    property double geoTransportLatitude: 0
    property double geoTransportLongitude: 0

    ...

    Location {
        id: location

        coordinate {
            latitude: root.geoTransportLatitude
            longitude: root.geoTransportLongitude
        }
    }

    Binding
    {
        target: map
        property: "center"
        value: location.coordinate
        when: location.coordinate.isValid
    }

И он работает. А потом думаю: стоп, чего это он работает? В биндинге идет обращение к полю coordinate элемента location. А значение поля coordinate в элементе location не задано! Есть какой-то странный вложенный элемент с типом coordinate (почему-то с маленькой буквы), но он же не задает _значение_поля_ coordinate.

Взял, и поставил двоеточие после coordinate в элементе location, вот так:

Код:
        coordinate: {
            latitude: root.geoTransportLatitude
            longitude: root.geoTransportLongitude
        }

И получил ошибку:

Цитировать
MapArea.qml:90:21: Unable to assign double to QGeoCoordinate

Теперь сижу и думаю: что эта запись БЕЗ двоеточия означает? Почему при описании свойства coordinate двоеточие ставить не нужно? Каким волшебным образом вложенный элемент преобразуется в значение поля?


Название: Re: Наличие и отсутствие двоеточия: поясните за синтаксис QML
Отправлено: kambala от Август 08, 2018, 01:14
без двоеточия — это по аналогии с другими элементами (например, Item): создается объект и описываются его свойства.