QML与C++之间结构体输出

1.定义带有结构体的头文件TrackClass.h

#ifndef TRACKCLASS_H
#define TRACKCLASS_H

#include <QGuiApplication>
#include "QObject"
#include <QVector>

struct TrackPoint {
    Q_GADGET
    Q_PROPERTY(qreal lat MEMBER lat)
    Q_PROPERTY(qreal lon MEMBER lon)
    Q_PROPERTY(qreal elevation MEMBER elevation)
    Q_PROPERTY(int age MEMBER age)
public:
    qreal lat;
    qreal lon;
    qreal elevation;
    int   age;

};

class TrackClass: public QObject
{
    Q_OBJECT
    Q_PROPERTY(QVariantList trackpoints READ gpx)


public:
    TrackClass(QObject *parent=nullptr):QObject(parent){


        trackPoints << TrackPoint{10.0, 10, 10, 88} << TrackPoint{11.1, 11, 11, 99};
    }

    QVariantList gpx() const{

        QVariantList l;
        for(const TrackPoint & p: trackPoints){
            l << QVariant::fromValue(p);

        }
        return  l;


        /*
        QVariantList itemsList;

        for(const TrackPoint &p : trackPoints)
        {
            QVariantMap itemMap;
            itemMap.insert("lat", p.lat);
            itemMap.insert("lon", p.lon);
            itemMap.insert("elevation", p.elevation);
            itemMap.insert("age",p.age);
            itemsList.append(itemMap);
        }

        return itemsList;
        */
    }



private:
    QVector<TrackPoint> trackPoints;
};

#endif // TRACKCLASS_H

2.main.cpp 中注册

#include "TrackClass.h"


TrackClass track;   
engine.rootContext()->setContextProperty("track", &track);

3.main.qml中访问结构体

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    Label{

        id:result
        width:300

    }

    Button{
        id:button1
        text: "GetInfo"
        anchors.top: result.bottom

        onClicked: {

            for( var i in track.trackpoints){
                var p = track.trackpoints[i];
                result.text += "lat: "+ p.lat+ " lon: "+ p.lon+ " elevation: "+ p.elevation +" age: "+p.age

            }

        }
    }



}

4.运行结果

相关推荐

  1. C语言结构按字节输出

    2023-12-13 15:30:02       11 阅读
  2. QMLC++通信

    2023-12-13 15:30:02       15 阅读
  3. QMLC++交互

    2023-12-13 15:30:02       16 阅读
  4. C++基础——结构

    2023-12-13 15:30:02       16 阅读
  5. c#---枚举结构

    2023-12-13 15:30:02       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-13 15:30:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-13 15:30:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-13 15:30:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-13 15:30:02       18 阅读

热门阅读

  1. 名称空间与函数对象

    2023-12-13 15:30:02       35 阅读
  2. 工具:Jupyter

    2023-12-13 15:30:02       38 阅读
  3. 力扣面试150题 | 209.长度最小的子数组

    2023-12-13 15:30:02       34 阅读
  4. 工厂模式实现

    2023-12-13 15:30:02       40 阅读
  5. 力扣labuladong——一刷day70

    2023-12-13 15:30:02       39 阅读
  6. POJ:1113

    2023-12-13 15:30:02       41 阅读
  7. springboot全局异常处理和自定义异常处理

    2023-12-13 15:30:02       40 阅读
  8. 轻松应用字典树

    2023-12-13 15:30:02       41 阅读
  9. 数据库课程设计mysql设计示例

    2023-12-13 15:30:02       33 阅读