Anbindung von C++ an QML mit double value

Alles rund um die Programmierung mit Qt Quick und QML
Antworten
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 19:41

Anbindung von C++ an QML mit double value

Beitrag 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.
Ritchie
Beiträge: 86
Registriert: 29. Januar 2007 19:41

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

Beitrag 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.
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

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

Beitrag 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
Antworten