当前位置: 首页 > news >正文

c++端的类,作为组件在qml端使用

qml使用c++端的类,作为组件在qml端使用

这个类必须继承QObject
这个类必须继承QObject

#ifndef COLLISIONALARM_H
#define COLLISIONALARM_H#include <QObject>class CollisionAlarm : public QObject
{Q_OBJECT//这个宏就叫做反射机制,让qml端直接使用该变量//qt5.14版本以后,鼠标光标放在变量处,按下alt+enter,快捷生成set get notifyQ_PROPERTY(QPointF endPoint READ getEndPoint WRITE setEndPoint NOTIFY ycnEndPointChanged)public:explicit CollisionAlarm(QObject *parent = nullptr);QPointF getStartPoint() const;void setStartPoint(const QPointF &value);QPointF getEndPoint() const;void setEndPoint(const QPointF &value);void onTimeout();signals:void ycnEndPointChanged();private:QPointF endPoint;
};#endif // COLLISIONALARM_H
#include "collisionalarm.h"
#include<QTimer>#include<QDebug>
CollisionAlarm::CollisionAlarm(QObject *parent) : QObject(parent)
{QTimer *timer = new QTimer(this);connect(timer, &QTimer::timeout, this, &CollisionAlarm::onTimeout);timer->start(1000);endPoint.setX(30.6600465788062);endPoint.setY(104.06294724255133);}
void CollisionAlarm::onTimeout()
{//一定要把这个信号发出去,qml端才能时刻获得endPoint的值emit ycnEndPointChanged();qDebug()<<endPoint;
}QPointF CollisionAlarm::getStartPoint() const
{return startPoint;
}void CollisionAlarm::setStartPoint(const QPointF &value)
{startPoint = value;
}QPointF CollisionAlarm::getEndPoint() const
{return endPoint;
}void CollisionAlarm::setEndPoint(const QPointF &value)
{endPoint = value;
}

找个地方写这段代码,把这个类注册到qml系统反射机制,qml才能识别

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

来到qml这端

先导入这c++这端的组件(就上面那个类)
import CollisionAlarm 1.0//直接使用上面这个类
CollisionAlarm{id:collisionWarnproperty var fendPoint: endPoint;//这个槽可以监测属性变化onEndPointChanged: {console.log("lat","lon",fendPoint.x,fendPoint.y)//    collision_line.append({"lat_collision":fendPoint.x,"lon_collision":fendPoint.y});// collision_line.addCoordinate(QtPositioning.coordinate(fendPoint.x,fendPoint.y));//  control.helicopter_.appendpoint("quhi",QtPositioning.coordinate(fendPoint.x,fendPoint.y),3500)}
}
http://www.lryc.cn/news/404701.html

相关文章:

  • Android 14 适配之 - 全屏 intent 通知
  • 如何在 Vue 和 JavaScript 中截取视频任意帧图片
  • 代码随想录学习 day54 图论 Bellman_ford 队列优化算法(又名SPFA) 学习
  • 递归遍历树结构,前端传入一整颗树,后端处理这个树,包括生成树的id和pid等信息,
  • Nginx详解(超级详细)
  • postman使用旧版本报错version mismatch detected
  • 探索数据的隐藏维度:使用Scikit-Learn进行特征交互性预测
  • 首个WebAgent在线评测框架和流程数据管理平台来了,GPT-4、Qwen登顶闭源和开源榜首!
  • UE TSharedPtr
  • 基于X86+FPGA+AI的远程医疗系统,支持12/13代 Intel Core处理器
  • 微信小程序开发入门指南
  • 一个非常好的美图展示网站整站打包源码,集成了wordpress和开源版ripro主题,可以完美运营。
  • MySQL:mysql的数据类型
  • IPython魔法命令的深入应用
  • Yum包下载
  • 数据结构代码
  • 环信IM x 亚马逊云科技,助力出海企业实现可靠通讯服务
  • R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-等高线图-曲线图-热力图-雷达图-韦恩图(二D)
  • go中map
  • 02-用户画像-技术架构+业务划分
  • HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号1
  • 敲详细的springboot中使用RabbitMQ的源码解析
  • 《Nginx核心技术》第04章:生成缩略图
  • Web 3.0革新:社交金融与边玩边赚开启用户数据主权时代
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 中文分词模拟器(200分) - 三语言AC题解(Python/Java/Cpp)
  • Cisco 路由重发布 —— 实现路由信息在不同路由域间的传递
  • mysql8和mysql5版本在使用mybatis框架时的注意事项
  • 为什么要有指针和引用类型?
  • vivado INTERNAL_VREF
  • VScode通过Graphviz插件和dot文件绘制层次图,导出svg