最近一直在研究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好强大。。。