Seite 1 von 1

Anbindung von C++ an QML mit double value

Verfasst: 18. September 2017 18:16
von Ritchie
Hallo Zusammen,

ich habe basierend auf dieser Webseite eine Anbindung zwischen C++ und QML erstellt.

Nur möchte ich nicht, wie im Beispiel, einen QString anbinden, sondern einen "double" value.

Class Define

Code: Alles auswählen

#ifndef BACKEND_H
#define BACKEND_H
#include <QObject>
#include <QString>
#include <QGeoPositionInfo>

class BackEnd : public QObject
{
    Q_OBJECT
    Q_PROPERTY(double Latitude READ Latitude WRITE setLatitude NOTIFY LatitudeChanged)
public:
    explicit BackEnd(QObject *parent = nullptr);
    void        setPosition(QGeoPositionInfo);
    double     Latitude(void);
    void       setLatitude(const double &);
signals:
    void       LatitudeChanged(void);
private:
    double     m_Latitude;

};
#endif // BACKEND_H

Class Implement

Code: Alles auswählen

#include "backend.h"
BackEnd::BackEnd(QObject *parent) :
    QObject(parent)
{
}
double BackEnd::Latitude(void)
{
    return m_Latitude;
}
void BackEnd::setLatitude(const double &Latitude)
{
    if (Latitude == m_Latitude)
        return;

    m_Latitude = Latitude;
    emit LatitudeChanged();
}
void BackEnd::setPosition(QGeoPositionInfo Info)
{
   setLatitude( Info.coordinate().latitude() );
}
qml - Code Ausschnitt des Textelement

Code: Alles auswählen

              Text {
                    id: textFieldLatitude
                    anchors.horizontalCenter: parent.horizontalCenter
                    text: qsTr("Latitude: ") + backend.Latitude
                    font.pixelSize: UIStyle.fontSizeS
                    font.italic: true
                    color: UIStyle.colorQtGray3
                    onTextChanged:
                            {
                            backend.Latitude = textFieldLatitude.text
                            textFieldLatitude.text = backend.Latitude
                            }
                }
 
.. Error: Cannot assign QString to double in File (an dieser Stelle " backend.Latitude = textFieldLatitude.text"

Ich vermute mal, das ich diese Zeile anders schreiben muss.
"backend.Latitude = textFieldLatitude.text".

Zudem, wie macht man den eine entsprechende Formatierung einer Zahl in Qml.
Die Ausgabe sollte als Fliesskommazahl mit entsprechenden Nachkommastellen erfolgen.

Oml ist komplettes Neuland für mich. Entsprechend gute Tutorials habe ich noch nicht gefunden.

Viele Grüße
R.

Re: Anbindung von C++ an QML mit double value

Verfasst: 20. September 2017 17:05
von Ritchie
Hallo Zusammen,

ich habe jetzt mein Programm auf "QString" umgeschrieben, da ich keine direkte Lösung für Double gesehen hatte. (In dieser Form).
Viele Grüße
R.

Re: Anbindung von C++ an QML mit double value

Verfasst: 1. Oktober 2017 22:35
von hilefoks
In deinem QML File in der Zeile:

Code: Alles auswählen

backend.Latitude = textFieldLatitude.text
versuchst du einen String (links der Zuweisung) einem double zuzuweisen. Das klappt natuerlich nicht. Du musst diesen String vorher in einen double konvertieren, z.B. mit http://doc.qt.io/qt-5/qml-qtqml-number.html