Qt C++程序和qml的交互方法
来源:互联网 发布:空知猩猩 编辑:程序博客网 时间:2024/06/05 08:26
更新:黑莓开发者网站上的文章非常好!!C++ and QML integration
================================================================
以下代码在Qt creator中测试过。
================================================================
//方法1:
//1.1 通过setContextProperty()暴露已存在的Qt C++对象给QML//1.2 qml中可以直接使用myObjectExposeByCxProperty对象
cpp文件:
MyClass myObj;
myObj.setmyString("Hello World");
QDeclarativeEngine *engine=viewer.engine();
QDeclarativeContext *context=engine->rootContext();
context->setContextProperty("myObjectExposeByCXProperty", &myObj);
qml文件:
onClicked: label.text=myObjectExposeByCXProperty.myString;
注意:在BlackBerry 10 Cascades中,设置context property的方法稍有不同。
QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
setContextProperty("myObjectExposeByCXProperty", &myObj);
类的方法需要声明为 Q_INVOKABLE 的,比如头文件中声明如下,这样才能在qml中调用这个类的play()方法。
Q_INVOKABLE void play();
================================================================//方法2:
//2.1 通过setContextProperty()暴露已存在的Qt C++对象给QML
//2.2 qml接受cpp程序发过来的信号
cpp文件:
MyClass myObj;
myObj.setmyString("Hello World");
QDeclarativeEngine *engine=viewer.engine();
QDeclarativeContext *context=engine->rootContext();
context->setContextProperty("myObjectExposeByCXProperty", &myObj);
qml文件:
Connections
{
target: myObjectExposeByCXProperty
onMyStringChanged:label.text="你好!Signal handler received, thanks man"
}
================================================================
//方法3:注册类型
//3.1 注意main.cpp需要#include <QtDeclarative>
//3.2 qml中可以直接声明使用MyClass类型
cpp文件:
qmlRegisterType<MyClass>("RegisterMyType", 1, 0, "MyClassType");
qml文件:
import RegisterMyType 1.0
onClicked: myclassExposeByRegType.setmyString("xxx");
label.text=myclassExposeByRegType.myString;
MyClassType
{
id:myclassExposeByRegType
}
提示:BlackBerry官方的一个例子,节略。。。
To use Phone APIs in QML, register the classes in your main.cpp file:
qmlRegisterType<bb::system::phone::Phone>("bb.system.phone", 1, 0, "Phone");bb::data::DataSource::registerQmlTypes();
http://developer.blackberry.com/cascades/documentation/device_comm/phone/index.html
- Qt C++程序和qml的交互方法
- qt qml和c++交互的一个简单例子
- Qt和Qml交互,及多线程
- Qt与Qml交互的小Demo
- QT c++程序使用qml的两种方法
- QT c++程序使用qml的两种方法
- qt quick 串口终端程序(qml 与 c++交互实例)
- Qt和C语言之间的交互
- 双十一的正确姿势 · qml和QT的交互初学
- Qt安装和QML HelloWord程序
- Qt Quick5.2 开发笔记2 -------Qml 和 c++交互的探索
- qt下qml和c++交互信号槽机制测试
- 实现js与Qt程序的交互的一些方法
- Qt移动应用开发:QML与C++的交互
- Qt移动应用开发:QML与Java的交互
- QT里用QML写的Android程序关于设置横屏的方法
- Qt程序打包发布方法(使解决QML打包后不能启动的bug)
- QML与c++交互方法
- 2013北京照明展后记
- poj 2395 Kruskal
- eclipse+pydev 安装和配置过程
- 预防ARP
- HMONITOR
- Qt C++程序和qml的交互方法
- ARP预防
- Java程序员应该知道的10个调试技巧
- 使用jQuery解析JSON数据
- 关于最小生成树
- qq即时聊天(点击图片,弹出qq聊天界面)
- MySQL5超时连接异常的处理
- android 弹出提示框
- orcle常用查询