diff options
author | Juha Vuolle <juha.vuolle@qt.io> | 2023-02-20 17:35:28 +0200 |
---|---|---|
committer | Juha Vuolle <juha.vuolle@qt.io> | 2023-02-23 08:13:29 +0200 |
commit | 7801e05e659845ccc163c7e473ed4d91fa1de778 (patch) | |
tree | f5acb38eba9d05d37d5e5902e20a8dd34dc6a530 | |
parent | a21673b4315f9fce913a9c7bc513102874e6777f (diff) |
Simplify calculator example to just one example variant
The calculator example is a rather generic SCXML example, but provides
demonstrative value as it implements the calculator from the SCXML
specification.
This commit removes the widget variant and renames the remaining QML
variant as plain "calculator".
Pick-to: 6.5
Task-number: QTBUG-111090
Change-Id: I6ecdbe9de49fd357c91e25c9d0fe31fdd7958d7e
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
21 files changed, 36 insertions, 499 deletions
diff --git a/examples/scxml/CMakeLists.txt b/examples/scxml/CMakeLists.txt index 3257421..cf0c67f 100644 --- a/examples/scxml/CMakeLists.txt +++ b/examples/scxml/CMakeLists.txt @@ -9,13 +9,12 @@ if(TARGET Qt::Widgets) qt_internal_add_example(trafficlight-widgets-static) qt_internal_add_example(trafficlight-widgets-dynamic) if(QT_FEATURE_scxml_ecmascriptdatamodel) - qt_internal_add_example(calculator-widgets) qt_internal_add_example(sudoku) endif() endif() if(TARGET Qt::Qml AND TARGET Qt::Gui) - qt_internal_add_example(calculator-qml) + qt_internal_add_example(calculator) qt_internal_add_example(trafficlight-qml-static) qt_internal_add_example(trafficlight-qml-dynamic) qt_internal_add_example(trafficlight-qml-simple) diff --git a/examples/scxml/calculator-common/doc/src/calculator-compiling.qdocinc b/examples/scxml/calculator-common/doc/src/calculator-compiling.qdocinc deleted file mode 100644 index e281df7..0000000 --- a/examples/scxml/calculator-common/doc/src/calculator-compiling.qdocinc +++ /dev/null @@ -1,30 +0,0 @@ - \section1 Compiling the State Machine - - We link against the Qt SCXML module by adding the following lines to the - example's build files. - - \section2 \e .pro when using qmake: - - \quotefromfile calculator-widgets/calculator-widgets.pro - \skipto QT - \printline scxml - - We then specify the state machine to compile: - \skipto STATECHARTS - \printline scxml - - \section2 \e CMakeLists.txt when using cmake: - \quotefromfile calculator-widgets/CMakeLists.txt - \skipto find_package - \printline Scxml - \skipto target_link_libraries - \printuntil ) - - We then specify the state machine to compile: - \skipto qt6_add_statecharts - \printuntil ) - - The statechart directives \e STATECHARTS or \e qt6_add_statecharts invoke the Qt SCXML - Compiler, \c qscxmlc, which is run automatically to generate \e statemachine.h and - \e statemachine.cpp, which are then added appropriately as headers and sources for - compilation. diff --git a/examples/scxml/calculator-qml/calculator-qml.pro b/examples/scxml/calculator-qml/calculator-qml.pro deleted file mode 100644 index c40242f..0000000 --- a/examples/scxml/calculator-qml/calculator-qml.pro +++ /dev/null @@ -1,13 +0,0 @@ -QT += qml scxml - -CONFIG += c++11 - -SOURCES += calculator-qml.cpp - -RESOURCES += calculator-qml.qrc - -STATECHARTS = ../calculator-common/statemachine.scxml - -# install -target.path = $$[QT_INSTALL_EXAMPLES]/scxml/calculator-qml -INSTALLS += target diff --git a/examples/scxml/calculator-widgets/CMakeLists.txt b/examples/scxml/calculator-widgets/CMakeLists.txt deleted file mode 100644 index 43e35a9..0000000 --- a/examples/scxml/calculator-widgets/CMakeLists.txt +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -cmake_minimum_required(VERSION 3.16) -project(calculator-widgets LANGUAGES CXX) - -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTOUIC ON) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/scxml/calculator-widgets") - -find_package(Qt6 REQUIRED COMPONENTS Core Gui Scxml Widgets) - -qt_add_executable(calculator-widgets - calculator-widgets.cpp - mainwindow.cpp mainwindow.h mainwindow.ui -) - -set_target_properties(calculator-widgets PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) - -target_link_libraries(calculator-widgets PUBLIC - Qt6::Core - Qt6::Gui - Qt6::Scxml - Qt6::Widgets -) - -# Statecharts: -qt6_add_statecharts(calculator-widgets - ../calculator-common/statemachine.scxml -) - -install(TARGETS calculator-widgets - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/scxml/calculator-widgets/calculator-widgets.cpp b/examples/scxml/calculator-widgets/calculator-widgets.cpp deleted file mode 100644 index 4000767..0000000 --- a/examples/scxml/calculator-widgets/calculator-widgets.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include "statemachine.h" -#include "mainwindow.h" - -#include <QApplication> - -int main(int argc, char **argv) -{ - QApplication app(argc, argv); - - CalculatorStateMachine machine; - MainWindow mainWindow(&machine); - - machine.start(); - mainWindow.show(); - return app.exec(); -} diff --git a/examples/scxml/calculator-widgets/calculator-widgets.pro b/examples/scxml/calculator-widgets/calculator-widgets.pro deleted file mode 100644 index 238980b..0000000 --- a/examples/scxml/calculator-widgets/calculator-widgets.pro +++ /dev/null @@ -1,19 +0,0 @@ -QT += widgets scxml - -CONFIG += c++11 - -STATECHARTS = ../calculator-common/statemachine.scxml - -SOURCES += \ - calculator-widgets.cpp \ - mainwindow.cpp - -HEADERS += \ - mainwindow.h - -FORMS += \ - mainwindow.ui - -# install -target.path = $$[QT_INSTALL_EXAMPLES]/scxml/calculator-widgets -INSTALLS += target diff --git a/examples/scxml/calculator-widgets/doc/images/calculator.png b/examples/scxml/calculator-widgets/doc/images/calculator.png Binary files differdeleted file mode 100644 index 0834d0a..0000000 --- a/examples/scxml/calculator-widgets/doc/images/calculator.png +++ /dev/null diff --git a/examples/scxml/calculator-widgets/doc/src/calculator.qdoc b/examples/scxml/calculator-widgets/doc/src/calculator.qdoc deleted file mode 100644 index 47354cc..0000000 --- a/examples/scxml/calculator-widgets/doc/src/calculator.qdoc +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only - -/*! - \example calculator-widgets - \title Qt SCXML Calculator Example - \ingroup examples-qtscxml - - \image calculator.png - - \brief A widget-based application that implements the Calculator example - presented in the SCXML Specification. - - \e {Calculator} uses Qt SCXML to implement the - \l{SCXML Specification - Calculator Example}{Calculator Example} - presented in the SCXML Specification. - - The state machine is specified in the \e statemachine.scxml file and - compiled into the \c CalculatorStateMachine class. The user interface is - created using Qt Widgets. - - \include examples-run.qdocinc - - \include calculator-compiling.qdocinc - - \section1 Instantiating the State Machine - - We instantiate the generated \c CalculatorStateMachine class in the - \e calculator-widgets.cpp file, as follows: - - \quotefromfile calculator-widgets/calculator-widgets.cpp - \skipto #include - \printuntil } - - \section1 Connecting to Active Properties - - After instantiating the state machine, we can connect to the active - properties of the states, as follows: - - \quotefromfile calculator-widgets/mainwindow.cpp - \skipto connect - \printuntil digit2 - \printuntil } - - The state machine can notify other code when events occur: - - \quotefromfile calculator-common/statemachine.scxml - \skipto transition event="DISPLAY.UPDATE - \printuntil </transition - - We connect to the \c updateDisplay event to display the data passed by - the events: - - \quotefromfile calculator-widgets/mainwindow.cpp - \skipto connectToEvent - \printuntil }); -*/ diff --git a/examples/scxml/calculator-widgets/mainwindow.cpp b/examples/scxml/calculator-widgets/mainwindow.cpp deleted file mode 100644 index 7b7f013..0000000 --- a/examples/scxml/calculator-widgets/mainwindow.cpp +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include "mainwindow.h" -#include "ui_mainwindow.h" - -#include <QScxmlStateMachine> -#include <QStringListModel> - -QT_USE_NAMESPACE - -MainWindow::MainWindow(QScxmlStateMachine *machine, QWidget *parent) : - QWidget(parent), - ui(new Ui::MainWindow), - m_machine(machine) -{ - ui->setupUi(this); - - connect(ui->digit0, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("DIGIT.0"); - }); - connect(ui->digit1, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("DIGIT.1"); - }); - connect(ui->digit2, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("DIGIT.2"); - }); - connect(ui->digit3, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("DIGIT.3"); - }); - connect(ui->digit4, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("DIGIT.4"); - }); - connect(ui->digit5, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("DIGIT.5"); - }); - connect(ui->digit6, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("DIGIT.6"); - }); - connect(ui->digit7, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("DIGIT.7"); - }); - connect(ui->digit8, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("DIGIT.8"); - }); - connect(ui->digit9, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("DIGIT.9"); - }); - connect(ui->point, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("POINT"); - }); - connect(ui->operPlus, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("OPER.PLUS"); - }); - connect(ui->operMinus, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("OPER.MINUS"); - }); - connect(ui->operStar, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("OPER.STAR"); - }); - connect(ui->operDiv, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("OPER.DIV"); - }); - connect(ui->equals, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("EQUALS"); - }); - connect(ui->c, &QAbstractButton::clicked, [this] { - m_machine->submitEvent("C"); - }); - - m_machine->connectToEvent(QLatin1String("updateDisplay"), this, - [this](const QScxmlEvent &event) { - const QString display = event.data().toMap() - .value("display").toString(); - ui->display->setText(display); - }); -} - -MainWindow::~MainWindow() -{ - delete ui; -} - diff --git a/examples/scxml/calculator-widgets/mainwindow.h b/examples/scxml/calculator-widgets/mainwindow.h deleted file mode 100644 index 798728f..0000000 --- a/examples/scxml/calculator-widgets/mainwindow.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include <QWidget> - -QT_BEGIN_NAMESPACE -namespace Ui { -class MainWindow; -} -class QScxmlStateMachine; -QT_END_NAMESPACE - - -class MainWindow : public QWidget -{ - Q_OBJECT - -public: - explicit MainWindow(QScxmlStateMachine *machine, QWidget *parent = nullptr); - ~MainWindow(); - -private: - QT_PREPEND_NAMESPACE(Ui::MainWindow) *ui; - QScxmlStateMachine *m_machine; -}; - -#endif // MAINWINDOW_H diff --git a/examples/scxml/calculator-widgets/mainwindow.ui b/examples/scxml/calculator-widgets/mainwindow.ui deleted file mode 100644 index 2ee3864..0000000 --- a/examples/scxml/calculator-widgets/mainwindow.ui +++ /dev/null @@ -1,177 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>MainWindow</class> - <widget class="QWidget" name="MainWindow"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>364</width> - <height>182</height> - </rect> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0" colspan="2"> - <widget class="QLabel" name="display"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - </widget> - </item> - <item row="1" column="0"> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="1" column="1"> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QPushButton" name="digit7"> - <property name="text"> - <string>7</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QPushButton" name="point"> - <property name="text"> - <string>.</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QPushButton" name="digit5"> - <property name="text"> - <string>5</string> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QPushButton" name="digit9"> - <property name="text"> - <string>9</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QPushButton" name="digit8"> - <property name="text"> - <string>8</string> - </property> - </widget> - </item> - <item row="4" column="2"> - <widget class="QPushButton" name="c"> - <property name="text"> - <string>C</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QPushButton" name="digit4"> - <property name="text"> - <string>4</string> - </property> - </widget> - </item> - <item row="2" column="3"> - <widget class="QPushButton" name="operStar"> - <property name="text"> - <string>*</string> - </property> - </widget> - </item> - <item row="2" column="2"> - <widget class="QPushButton" name="digit3"> - <property name="text"> - <string>3</string> - </property> - </widget> - </item> - <item row="4" column="3"> - <widget class="QPushButton" name="equals"> - <property name="text"> - <string>=</string> - </property> - </widget> - </item> - <item row="1" column="3"> - <widget class="QPushButton" name="operMinus"> - <property name="text"> - <string>-</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QPushButton" name="digit1"> - <property name="text"> - <string>1</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QPushButton" name="digit0"> - <property name="text"> - <string>0</string> - </property> - </widget> - </item> - <item row="3" column="3"> - <widget class="QPushButton" name="operDiv"> - <property name="text"> - <string>/</string> - </property> - </widget> - </item> - <item row="0" column="3"> - <widget class="QPushButton" name="operPlus"> - <property name="text"> - <string>+</string> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QPushButton" name="digit6"> - <property name="text"> - <string>6</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QPushButton" name="digit2"> - <property name="text"> - <string>2</string> - </property> - </widget> - </item> - </layout> - </item> - <item row="2" column="1"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>10</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/examples/scxml/calculator-qml/Button.qml b/examples/scxml/calculator/Button.qml index edbedba..edbedba 100644 --- a/examples/scxml/calculator-qml/Button.qml +++ b/examples/scxml/calculator/Button.qml diff --git a/examples/scxml/calculator-qml/CMakeLists.txt b/examples/scxml/calculator/CMakeLists.txt index 700a9d0..336e9e4 100644 --- a/examples/scxml/calculator-qml/CMakeLists.txt +++ b/examples/scxml/calculator/CMakeLists.txt @@ -2,7 +2,7 @@ # SPDX-License-Identifier: BSD-3-Clause cmake_minimum_required(VERSION 3.16) -project(calculator-qml LANGUAGES CXX) +project(calculator LANGUAGES CXX) set(CMAKE_AUTOMOC ON) @@ -10,20 +10,20 @@ if(NOT DEFINED INSTALL_EXAMPLESDIR) set(INSTALL_EXAMPLESDIR "examples") endif() -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/scxml/calculator-qml") +set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/scxml/calculator") find_package(Qt6 REQUIRED COMPONENTS Core Gui Qml Scxml) -qt_add_executable(calculator-qml - calculator-qml.cpp +qt_add_executable(calculator + calculator.cpp ) -set_target_properties(calculator-qml PROPERTIES +set_target_properties(calculator PROPERTIES WIN32_EXECUTABLE TRUE MACOSX_BUNDLE TRUE ) -target_link_libraries(calculator-qml PUBLIC +target_link_libraries(calculator PUBLIC Qt::Core Qt::Gui Qt::Qml @@ -31,24 +31,24 @@ target_link_libraries(calculator-qml PUBLIC ) # Resources: -set(calculator-qml_resource_files +set(calculator_resource_files "Button.qml" - "calculator-qml.qml" + "calculator.qml" ) -qt6_add_resources(calculator-qml "calculator-qml" +qt6_add_resources(calculator "calculator" PREFIX "/" FILES - ${calculator-qml_resource_files} + ${calculator_resource_files} ) # Statecharts: -qt6_add_statecharts(calculator-qml - ../calculator-common/statemachine.scxml +qt6_add_statecharts(calculator + statemachine.scxml ) -install(TARGETS calculator-qml +install(TARGETS calculator RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" diff --git a/examples/scxml/calculator-qml/calculator-qml.cpp b/examples/scxml/calculator/calculator.cpp index d6f3137..3bf9265 100644 --- a/examples/scxml/calculator-qml/calculator-qml.cpp +++ b/examples/scxml/calculator/calculator.cpp @@ -15,7 +15,7 @@ int main(int argc, char *argv[]) "CalculatorStateMachine"); QQmlApplicationEngine engine; - engine.load(QUrl(QStringLiteral("qrc:/calculator-qml.qml"))); + engine.load(QUrl(QStringLiteral("qrc:/calculator.qml"))); if (engine.rootObjects().isEmpty()) return -1; diff --git a/examples/scxml/calculator/calculator.pro b/examples/scxml/calculator/calculator.pro new file mode 100644 index 0000000..a60a1d4 --- /dev/null +++ b/examples/scxml/calculator/calculator.pro @@ -0,0 +1,13 @@ +QT += qml scxml + +CONFIG += c++11 + +SOURCES += calculator.cpp + +RESOURCES += calculator.qrc + +STATECHARTS = statemachine.scxml + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/scxml/calculator +INSTALLS += target diff --git a/examples/scxml/calculator-qml/calculator-qml.qml b/examples/scxml/calculator/calculator.qml index 1f6849c..1f6849c 100644 --- a/examples/scxml/calculator-qml/calculator-qml.qml +++ b/examples/scxml/calculator/calculator.qml diff --git a/examples/scxml/calculator-qml/calculator-qml.qrc b/examples/scxml/calculator/calculator.qrc index 55bc81c..d749b23 100644 --- a/examples/scxml/calculator-qml/calculator-qml.qrc +++ b/examples/scxml/calculator/calculator.qrc @@ -1,6 +1,6 @@ <RCC> <qresource prefix="/"> - <file>calculator-qml.qml</file> + <file>calculator.qml</file> <file>Button.qml</file> </qresource> </RCC> diff --git a/examples/scxml/calculator-qml/doc/images/calculator-qml.png b/examples/scxml/calculator/doc/images/calculator.png Binary files differindex 021f56d..021f56d 100644 --- a/examples/scxml/calculator-qml/doc/images/calculator-qml.png +++ b/examples/scxml/calculator/doc/images/calculator.png diff --git a/examples/scxml/calculator-qml/doc/src/calculator-qml.qdoc b/examples/scxml/calculator/doc/src/calculator.qdoc index 788ed47..6a784ee 100644 --- a/examples/scxml/calculator-qml/doc/src/calculator-qml.qdoc +++ b/examples/scxml/calculator/doc/src/calculator.qdoc @@ -2,11 +2,11 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! - \example calculator-qml - \title Qt SCXML Calculator QML Example + \example calculator + \title Qt SCXML Calculator Example \ingroup examples-qtscxml - \image calculator-qml.png + \image calculator.png \brief A Qt Quick application that implements the Calculator example presented in the SCXML Specification. @@ -21,20 +21,18 @@ \include examples-run.qdocinc - \include calculator-compiling.qdocinc - \section1 Instantiating the State Machine We make the generated \c CalculatorStateMachine class available to QML by - registering it as a QML type in the \e calculator-qml.cpp file: + registering it as a QML type in the \e calculator.cpp file: - \quotefromfile calculator-qml/calculator-qml.cpp + \quotefromfile calculator/calculator.cpp \skipto statemachine.h \printuntil } To use the CalculatorStateMachine type in a QML file, we import it: - \quotefromfile calculator-qml/calculator-qml.qml + \quotefromfile calculator/calculator.qml \skipto CalculatorStateMachine \printline CalculatorStateMachine diff --git a/examples/scxml/calculator-common/statemachine.scxml b/examples/scxml/calculator/statemachine.scxml index b1c6bb7..b1c6bb7 100644 --- a/examples/scxml/calculator-common/statemachine.scxml +++ b/examples/scxml/calculator/statemachine.scxml diff --git a/examples/scxml/scxml.pro b/examples/scxml/scxml.pro index 0c6b6a3..d467fb4 100644 --- a/examples/scxml/scxml.pro +++ b/examples/scxml/scxml.pro @@ -3,12 +3,11 @@ TEMPLATE = subdirs qtHaveModule(widgets) { SUBDIRS += trafficlight-widgets-static SUBDIRS += trafficlight-widgets-dynamic - SUBDIRS += calculator-widgets SUBDIRS += sudoku } qtHaveModule(quick) { - SUBDIRS += calculator-qml + SUBDIRS += calculator SUBDIRS += trafficlight-qml-static SUBDIRS += trafficlight-qml-dynamic SUBDIRS += trafficlight-qml-simple |