• c++ and qt

    From bubu@21:1/5 to All on Tue Jan 16 20:52:56 2024
    Hi,

    Sorry for my bad english and sorry for my bad level in qt.

    I would like to use a qml program and c++ libraries (with import).

    I use Visual Studio on windows.

    I have several problems (and I put an example here-after) :
    - how to use c++ with qml
    - how to use a library written in c++ to use in a program in QML with
    IMPORT statement.
    - how to build executable and librarie with cmake?

    My example is here :

    main.qml

    ApplicationWindow {
    visible: true
    width: 400
    height: 300
    title: "Calculator"

    Calculatrice {
    id: calculatrice
    }

    Column {
    anchors.centerIn: parent
    spacing: 10

    TextField {
    id: input1
    placeholderText: "Entrez le premier nombre"
    validator: DoubleValidator {
    bottom: -1000000000.0
    top: 1000000000.0
    }
    }

    TextField {
    id: input2
    placeholderText: "Entrez le deuxième nombre"
    validator: DoubleValidator {
    bottom: -1000000000.0
    top: 1000000000.0
    }
    }

    Row {
    spacing: 10

    Button {
    text: "Additionner"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.add(parseFloat(input1.text), parseFloat(input2.text))
    }
    }

    Button {
    text: "Soustraire"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.subtract(parseFloat(input1.text), parseFloat(input2.text))
    }
    }

    Button {
    text: "Multiplier"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.multiply(parseFloat(input1.text), parseFloat(input2.text))
    }
    }
    }

    Label {
    id: resultLabel
    text: "Résultat: "
    }
    }
    }




    main.cpp

    #include <QGuiApplication>#include <QQmlApplicationEngine>#include <QtCore>//#include "calculator.cpp"int main(int argc, char* argv[]){ QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv); QQmlApplicationEngine engine; //qmlRegisterType<Calculator>("Calculator", 1, 0, "Calculator"); const
    QUrl url(QStringLiteral("qrc:/main.qml"));
    QObject::connect(&amp;engine, &amp;QQmlApplicationEngine::objectCreated,
    &amp;app, [url](QObject* obj, const QUrl&amp; objUrl) { if (!obj &amp;&amp; url == objUrl) QCoreApplication::exit(-1);
    }, Qt::QueuedConnection); engine.load(url); return
    app.exec();}



    calculator.h


    // calculator.h#ifndef CALCULATOR_H#define CALCULATOR_Hclass Calculator {public: double add(double a, double b) const; double subtract(double a,
    double b) const; double multiply(double a, double b) const;};#endif // CALCULATOR_H


    calculator.cpp

    #include <QObject>class Calculator : public QObject{ Q_OBJECTpublic: Q_INVOKABLE double add(double a, double b) const { return a + b;
    } Q_INVOKABLE double subtract(double a, double b) const { return
    a - b; } Q_INVOKABLE double multiply(double a, double b) const {
    return a * b; }};



    Could you help me, please.
    It make errors on building. Why ?
    How to build library for qml (using IMPORT) and executable with cmake ?

    Sorry. I have a lot of problems. I will have others questions after.

    Thanks a lot.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bubu@21:1/5 to All on Tue Jan 16 21:26:06 2024
    Hi,

    Sorry for my bad english and sorry for my bad level in qt.

    I would like to use a qml program and c++ libraries (with import).

    I use Visual Studio on windows.

    I have several problems (and I put an example here-after) :
    - how to use c++ with qml
    - how to use a library written in c++ to use in a program in QML with
    IMPORT statement.
    - how to build executable and librarie with cmake?

    My example is here :

    main.qml

    import QtQuick 2.15
    import QtQuick.Controls 2.15
    // import calculator ? ? ? how ?


    ApplicationWindow {
    visible: true
    width: 400
    height: 300
    title: "Calculator"

    Calculatrice {
    id: calculatrice
    }

    Column {
    anchors.centerIn: parent
    spacing: 10

    TextField {
    id: input1
    placeholderText: "Entrez le premier nombre"
    validator: DoubleValidator {
    bottom: -1000000000.0
    top: 1000000000.0
    }
    }

    TextField {
    id: input2
    placeholderText: "Entrez le deuxième nombre"
    validator: DoubleValidator {
    bottom: -1000000000.0
    top: 1000000000.0
    }
    }

    Row {
    spacing: 10

    Button {
    text: "Additionner"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.add(parseFloat(input1.text), parseFloat(input2.text))
    }
    }

    Button {
    text: "Soustraire"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.subtract(parseFloat(input1.text), parseFloat(input2.text))
    }
    }

    Button {
    text: "Multiplier"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.multiply(parseFloat(input1.text), parseFloat(input2.text))
    }
    }
    }

    Label {
    id: resultLabel
    text: "Résultat: "
    }
    }
    }




    main.cpp

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QtCore>

    #include "calculator.cpp"

    int main(int argc, char* argv[])
    {
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;

    qmlRegisterType<Calculator>("Calculator", 1, 0, "Calculator");

    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
    &app, [url](QObject* obj, const QUrl& objUrl) {
    if (!obj && url == objUrl)
    QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();}



    calculator.h


    // calculator.h
    #ifndef CALCULATOR_H
    #define CALCULATOR_H

    class Calculator {
    public:
    double add(double a, double b) const;
    double subtract(double a, double b) const;
    double multiply(double a, double b) const;
    };

    #endif // CALCULATOR_H


    calculator.cpp

    #include <QObject>

    class Calculator : public QObject
    {
    Q_OBJECT

    public:
    Q_INVOKABLE double add(double a, double b) const {
    return a + b;
    }

    Q_INVOKABLE double subtract(double a, double b) const {
    return a - b;
    }

    Q_INVOKABLE double multiply(double a, double b) const {
    return a * b;
    }
    };



    Could you help me, please.
    It make errors on building. Why ?
    How to build library for qml (using IMPORT) and executable with cmake ?

    Sorry. I have a lot of problems. I will have others questions after.

    Thanks a lot.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From b@21:1/5 to All on Tue Jan 16 21:25:20 2024
    Hi,

    Sorry for my bad english and sorry for my bad level in qt.

    I would like to use a qml program and c++ libraries (with import).

    I use Visual Studio on windows.

    I have several problems (and I put an example here-after) :
    - how to use c++ with qml
    - how to use a library written in c++ to use in a program in QML with
    IMPORT statement.
    - how to build executable and librarie with cmake?

    My example is here :

    main.qml

    import QtQuick 2.15
    import QtQuick.Controls 2.15
    // import calculator ? ? ? how ?


    ApplicationWindow {
    visible: true
    width: 400
    height: 300
    title: "Calculator"

    Calculatrice {
    id: calculatrice
    }

    Column {
    anchors.centerIn: parent
    spacing: 10

    TextField {
    id: input1
    placeholderText: "Entrez le premier nombre"
    validator: DoubleValidator {
    bottom: -1000000000.0
    top: 1000000000.0
    }
    }

    TextField {
    id: input2
    placeholderText: "Entrez le deuxième nombre"
    validator: DoubleValidator {
    bottom: -1000000000.0
    top: 1000000000.0
    }
    }

    Row {
    spacing: 10

    Button {
    text: "Additionner"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.add(parseFloat(input1.text), parseFloat(input2.text))
    }
    }

    Button {
    text: "Soustraire"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.subtract(parseFloat(input1.text), parseFloat(input2.text))
    }
    }

    Button {
    text: "Multiplier"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.multiply(parseFloat(input1.text), parseFloat(input2.text))
    }
    }
    }

    Label {
    id: resultLabel
    text: "Résultat: "
    }
    }
    }




    main.cpp

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QtCore>

    #include "calculator.cpp"

    int main(int argc, char* argv[])
    {
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;

    qmlRegisterType<Calculator>("Calculator", 1, 0, "Calculator");

    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
    &app, [url](QObject* obj, const QUrl& objUrl) {
    if (!obj && url == objUrl)
    QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();}



    calculator.h


    // calculator.h
    #ifndef CALCULATOR_H
    #define CALCULATOR_H

    class Calculator {
    public:
    double add(double a, double b) const;
    double subtract(double a, double b) const;
    double multiply(double a, double b) const;
    };

    #endif // CALCULATOR_H


    calculator.cpp

    #include <QObject>

    class Calculator : public QObject
    {
    Q_OBJECT

    public:
    Q_INVOKABLE double add(double a, double b) const {
    return a + b;
    }

    Q_INVOKABLE double subtract(double a, double b) const {
    return a - b;
    }

    Q_INVOKABLE double multiply(double a, double b) const {
    return a * b;
    }
    };



    Could you help me, please.
    It make errors on building. Why ?
    How to build library for qml (using IMPORT) and executable with cmake ?

    Sorry. I have a lot of problems. I will have others questions after.

    Thanks a lot.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From bubu@21:1/5 to All on Tue Jan 16 21:29:00 2024
    Hi,

    Sorry for my bad english and sorry for my bad level in qt.

    I would like to use a qml program and c++ libraries (with import).

    I use Visual Studio on windows.
    I want to use QT5 (not qt5)

    I have several problems (and I put an example here-after) :
    - how to use c++ with qml
    - how to use a library written in c++ to use in a program in QML with
    IMPORT statement.
    - how to build executable and librarie with cmake?

    My example is here :

    main.qml

    import QtQuick 2.15
    import QtQuick.Controls 2.15
    // import calculator ? ? ? how ?


    ApplicationWindow {
    visible: true
    width: 400
    height: 300
    title: "Calculator"

    Calculatrice {
    id: calculatrice
    }

    Column {
    anchors.centerIn: parent
    spacing: 10

    TextField {
    id: input1
    placeholderText: "Entrez le premier nombre"
    validator: DoubleValidator {
    bottom: -1000000000.0
    top: 1000000000.0
    }
    }

    TextField {
    id: input2
    placeholderText: "Entrez le deuxième nombre"
    validator: DoubleValidator {
    bottom: -1000000000.0
    top: 1000000000.0
    }
    }

    Row {
    spacing: 10

    Button {
    text: "Additionner"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.add(parseFloat(input1.text), parseFloat(input2.text))
    }
    }

    Button {
    text: "Soustraire"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.subtract(parseFloat(input1.text), parseFloat(input2.text))
    }
    }

    Button {
    text: "Multiplier"
    onClicked: {
    resultLabel.text = "Résultat: " + calculator.multiply(parseFloat(input1.text), parseFloat(input2.text))
    }
    }
    }

    Label {
    id: resultLabel
    text: "Résultat: "
    }
    }
    }




    main.cpp

    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QtCore>

    #include "calculator.cpp"

    int main(int argc, char* argv[])
    {
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;

    qmlRegisterType<Calculator>("Calculator", 1, 0, "Calculator");

    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
    &app, [url](QObject* obj, const QUrl& objUrl) {
    if (!obj && url == objUrl)
    QCoreApplication::exit(-1);
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();}



    calculator.h


    // calculator.h
    #ifndef CALCULATOR_H
    #define CALCULATOR_H

    class Calculator {
    public:
    double add(double a, double b) const;
    double subtract(double a, double b) const;
    double multiply(double a, double b) const;
    };

    #endif // CALCULATOR_H


    calculator.cpp

    #include <QObject>

    class Calculator : public QObject
    {
    Q_OBJECT

    public:
    Q_INVOKABLE double add(double a, double b) const {
    return a + b;
    }

    Q_INVOKABLE double subtract(double a, double b) const {
    return a - b;
    }

    Q_INVOKABLE double multiply(double a, double b) const {
    return a * b;
    }
    };



    Could you help me, please.
    It make errors on building. Why ?
    How to build library for qml (using IMPORT) and executable with cmake ?

    Sorry. I have a lot of problems. I will have others questions after.

    Thanks a lot.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)