-
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(&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_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)