-
Bug
-
Resolution: Unresolved
-
P2: Important
-
6.4.0
QTBUG-107209 was closed after updating the documentation to show that the C++ class generated by qt_add_statecharts() can be registered in QML using QML_FOREIGN:
struct MyMachineRegistration
{
Q_GADGET
QML_FOREIGN(MyStateMachine}
QML_NAMED_ELEMENT(MyStateMachine}
};
The resulting application does work correctly, but qmlsc produces a number of warnings/errors during compilation.
Attached is an attempt to convert the static Qt SCXML Traffic Light Example (https://doc.qt.io/qt-6/qtscxml-trafficlight-widgets-static-example.html ). Here, the state machine was put in a standalone library to avoid the possibility that files are compiled in the wrong order, but it produces the following warnings/errors anyway:
[39/53 6.7/sec] Generating .rcc/qmlcache/trafficlight-qml-static_Lights.ui_qml.cpp
Warning: Lights.ui.qml:85:39: Property "green" not found on type "TrafficLightStateMachine"
when: lights.stateMachine.green
^^^^^
Error: Lights.ui.qml:85:39: Could not compile binding for when: Cannot load property green from TrafficLightStateMachine of (component in D:/dev/build-trafficlight-qml-static-Desktop_Qt_6_4_0_MSVC2019_64bit-Debug/Lights.ui.qml)::stateMachine with type TrafficLightStateMachine.
when: lights.stateMachine.green
^^^^^
Warning: Lights.ui.qml:76:39: Property "yellow" not found on type "TrafficLightStateMachine"
when: lights.stateMachine.yellow || lights.stateMachine.blinking
^^^^^^
Error: Lights.ui.qml:76:39: Could not compile binding for when: Cannot load property yellow from TrafficLightStateMachine of (component in D:/dev/build-trafficlight-qml-static-Desktop_Qt_6_4_0_MSVC2019_64bit-Debug/Lights.ui.qml)::stateMachine with type TrafficLightStateMachine.
when: lights.stateMachine.yellow || lights.stateMachine.blinking
^^^^^^
Warning: Lights.ui.qml:62:39: Property "redGoingGreen" not found on type "TrafficLightStateMachine"
when: lights.stateMachine.redGoingGreen
^^^^^^^^^^^^^
Error: Lights.ui.qml:62:39: Could not compile binding for when: Cannot load property redGoingGreen from TrafficLightStateMachine of (component in D:/dev/build-trafficlight-qml-static-Desktop_Qt_6_4_0_MSVC2019_64bit-Debug/Lights.ui.qml)::stateMachine with type TrafficLightStateMachine.
when: lights.stateMachine.redGoingGreen
^^^^^^^^^^^^^
Warning: Lights.ui.qml:53:39: Property "red" not found on type "TrafficLightStateMachine"
when: lights.stateMachine.red
^^^
Error: Lights.ui.qml:53:39: Could not compile binding for when: Cannot load property red from TrafficLightStateMachine of (component in D:/dev/build-trafficlight-qml-static-Desktop_Qt_6_4_0_MSVC2019_64bit-Debug/Lights.ui.qml)::stateMachine with type TrafficLightStateMachine.
when: lights.stateMachine.red
^^^
[40/53 6.9/sec] Generating .rcc/qmlcache/trafficlight-qml-static_trafficlight-qml-static_qml.cpp
Warning: trafficlight-qml-static.qml:8:9: Binding assigned to "running", but no property "running" exists in the current element.
running: true
^^^^^^^
[41/53 7.0/sec] Generating .rcc/qmlcache/trafficlight-qml-static_Button_qml.cpp
[42/53 7.2/sec] Generating .rcc/qmlcache/trafficlight-qml-static_TrafficLight_qml.cpp
Warning: TrafficLight.qml:23:37: Property "working" not found on type "TrafficLightStateMachine"
button.source: stateMachine.working ? "pause.png" : "play.png"
^^^^^^^
Error: TrafficLight.qml:23:37: Could not compile binding for source: Cannot load property working from TrafficLightStateMachine of (component in D:/dev/build-trafficlight-qml-static-Desktop_Qt_6_4_0_MSVC2019_64bit-Debug/TrafficLight.qml)::stateMachine with type TrafficLightStateMachine.
button.source: stateMachine.working ? "pause.png" : "play.png"
^^^^^^^
Warning: TrafficLight.qml:25:65: Property "working" not found on type "TrafficLightStateMachine"
button.onClicked: stateMachine.submitEvent(stateMachine.working ? "smash" : "repair");
^^^^^^^
Error: TrafficLight.qml:25:65: Could not compile binding for onClicked: Cannot load property working from TrafficLightStateMachine of (component in D:/dev/build-trafficlight-qml-static-Desktop_Qt_6_4_0_MSVC2019_64bit-Debug/TrafficLight.qml)::stateMachine with type TrafficLightStateMachine.
button.onClicked: stateMachine.submitEvent(stateMachine.working ? "smash" : "repair");
^^^^^^^
- relates to
-
QTBUG-130903 QML type registration creates warning when using generated source files
-
- Reported
-