当前位置:首页 >> 半导体技术突破 >> 【QML】QML与C++混合编程,结构体参数互相传递,小米1299

【QML】QML与C++混合编程,结构体参数互相传递,小米1299

cpugpu芯片开发光刻机 半导体技术突破 1
文件名:【QML】QML与C++混合编程,结构体参数互相传递,小米1299 【QML】QML与C++混合编程,结构体参数互相传递 1. 方法1:

C++结构体的每个成员都声明成QML的属性。QML中就可以直接以属性的方式读写。

.h文件 typedef struct {QString startRecord;QString fanSpeed;QString scrBrightness;QString printerType;} ManuSet_t;class ManuSet : public QObject{Q_OBJECTQ_PROPERTY(QString startRecord READ startRecord WRITE setStartRecord NOTIFY startRecordChanged)Q_PROPERTY(QString fanSpeed READ fanSpeed WRITE setFanSpeed NOTIFY fanSpeedChanged)Q_PROPERTY(QString scrBrightness READ scrBrightness WRITE setScrBrightness NOTIFY scrBrightnessChanged)Q_PROPERTY(QString printerType READ printerType WRITE setPrinterType NOTIFY printerTypeChanged)public:QString startRecord();void setStartRecord(const QString &para);QString fanSpeed();void setFanSpeed(const QString &para);QString scrBrightness();void setScrBrightness(const QString &para);QString printerType();void setPrinterType(const QString &para);signals:void startRecordChanged();void fanSpeedChanged();void scrBrightnessChanged();void printerTypeChanged();} .cpp文件中实现 main.cpp中注册类型 qmlRegisterType<ManuSet>("com.custom", 1, 0, "ManuSet"); qml文件中直接使用 import com.custom 1.0ManuSet{id: _msstartRecord: "test"} 2. 方法2:

QVariantMap 的方式。

2.1 C++发送给QML 结构体 struct Info{float tmp; // 温度int day_code; // 白天天气代码QString day_text; // 白天天气情况int night_code; // 夜间天气代码QString night_text; // 夜间天气情况}; C++代码 //在minxCppDemo类中声明和定义QVariantMap MixCppDemo::getInfo(Info *m_Info){QVariantMap map;map.clear();map.insert("tmp", m_Info->tmp);map.insert("day_code", m_Info->day_code);map.insert("day_text", m_Info->day_text);map.insert("night_code", m_Info->night_code);map.insert("night_text", m_Info->night_text);return map;} QML代码 MixCppDemo {id: minxCppDemo}Component.onCompleted: {var textString = ''// 显示天气信息var currentInfo = minxCppDemo.getInfo()textString += '温度:' + currentInfo.tmp.toString() + '\n';textString += '白天天气代码: ' + currentInfo.day_code.toString() + '\n'textString += '白天天气情况: ' + currentInfo.day_text + '\n'textString += '夜间天气代码: ' + currentInfo.night_code.toString() + '\n'textString += '夜间天气情况: ' + currentInfo.night_text + '\n\n'console.log(textString);} 2.2 QML发送给C++ 结构体 struct Info{float tmp; // 温度int day_code; // 白天天气代码QString day_text; // 白天天气情况int night_code; // 夜间天气代码QString night_text; // 夜间天气情况}; QML代码 MixCppDemo {id: minxCppDemo}function test(){var map = {};map.tmp = 25.5;//map["tmp"] = 25.5; //与上面的代码效果一样map.day_code = 1;map.day_text = "2";map.night_code = 3;map.night_text = "4";minxCppDemo.setInfo(map);} C++代码 Info m_Info;void MixCppDemo::setInfo(const QVariantMap map){m_Info.tmp = map.value("tmp").toString();//...qDebug() << map.value("tmp").toString();qDebug() << map.value("day_code").toString();qDebug() << map.value("day_text").toString();qDebug() << map.value("night_code").toString();qDebug() << map.value("night_text").toString();}
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接