qml 与C++交互

最近一直在研究qml 怎么与C++交互,今天在网上看到一段代码忽然想明白了,哦!!!我在QT还只是一个小白,嘿嘿

首先在我们定义了CPP文件起名:比如:util.cpp,baidumusic.cpp

然后,在main.cpp中注册:

   qmlRegisterType<BaiduMusic>("CleanPlayerCore",1,0,"BaiduMusic");

qmlRegisterType<Util>("CleanPlayerCore",1,0,"Util");

别忘了引入头文件
#include "baidumusic.h"
#include "util.h"
然后我们去main.qml中引入下面的库
import CleanPlayerCore 1.0

在qml文件中就可以直接使用了
   //工具函数
    Util {
        id:util
    }

    //百度音乐Api
    BaiduMusic {
        id: baiduMusic
    }
是不是很简单。。。可是,却让我想了好几天。。。其实,网上有很多资料,可有的时候就是资料太多了。。关键雷同的更多。。。反而找不到自己想要的。。。
这中方法应该是C++作为对象导入到qml里,个人觉得好像没有wpf,画面与逻辑分开的那么明显。也许是我还没有搞明白。不喜勿喷
2)在BaiduMusic中定义了信号:
   void getSongLinkComplete(QString songLink);

   void getLyricComplete(QString url,QString lyricContent);
然后在其他的qml中调用:
Connections{
target: baiduMusic
onGetSongLinkComplete:{
//to do something
}
onGetLyricComplete:{
//to do something
}
}
QT好强大。。。



原文地址:https://www.cnblogs.com/wxmwanggood/p/9138415.html