QML与c++交互学习笔记(八) qt c++直接调用QML中的函数, 直接设置属性
来源:互联网 发布:c和a的算法 编辑:程序博客网 时间:2024/05/21 09:00
1.这里主要是介绍,如何在c++中调用QML中的函数和设置QML中的属性的问题
2.具体代码
// UICtest.qmlimport Qt 4.7Rectangle { id: mainWidget; width: 640 height: 480 function callbyc(v) { mainWidget.color = v; return "finish"; } Rectangle{ id: secondRect; x: 100; y: 20; width: 400; height: 300; Rectangle{ x: 10; y: 20; width: 30; height: 40; color: "#FF035721" Text { objectName: "NeedFindObj"; anchors.fill: parent; text: ""; } } }}
// main.cpp#include <QtGui/QApplication>#include <QtDeclarative/QDeclarativeView>#include <QtDeclarative/QDeclarativeEngine>#include <QtDeclarative/QDeclarativeComponent>#include <QtDeclarative/QDeclarativeContext>#include <QtDeclarative/QDeclarativeItem>#include <QMetaObject>int main(int argc, char *argv[]){ QApplication a(argc, argv); QDeclarativeView qmlView; qmlView.setSource(QUrl::fromLocalFile("../UICtest/UICtest.qml")); qmlView.show(); // 获取根节点,就是 QML中 id是mainWidget的节点 QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(qmlView.rootObject()); item->setProperty("color", QVariant("blue")); // 查找到我们需要的节点根均objectname NeedFindObj 来获得,并设置他的文本属性 QDeclarativeItem *item1 = item->findChild<QDeclarativeItem *>("NeedFindObj"); if (item1) { item1->setProperty("text", QVariant("OK")); } // 调用QML中的函数, 分别是 函数所在的对象, 函数名,返回值, 参数 QVariant returnVar; QVariant arg1 = "blue"; QMetaObject::invokeMethod(item, "callbyc", Q_RETURN_ARG(QVariant, returnVar),Q_ARG(QVariant, arg1)); qDebug(" %s",returnVar.toString().toLocal8Bit().data()); return a.exec();}
说明:
这里的根节点是id为mainWidget的矩形元素,那么在C++中获取根节点后就可以,直接的设置他的属性了。其他属性也可以同样,调用指定节点内的函数是通过QMetaObject中的invokeMethod 来进行调用的。
最后所有关于QML和c++交互部分就基本写完,如果想要更多的东西,或者一些其他方法,强烈看看
http://doc.qt.nokia.com/4.7-snapshot/qtbinding.html,或者帮助文档,(究竟是不是我的文档里面没有还是怎么的)
- QML与c++交互学习笔记(八) qt c++直接调用QML中的函数, 直接设置属性
- QML与c++交互学习笔记(八) qt c++直接调用QML中的函数, 直接设置属性
- QT C++直接调用QML中的函数, 直接设置属性
- QML与c++交互学习笔记
- QML与c++交互学习笔记(一)
- QML与c++交互学习笔记(二)
- QML与c++交互学习笔记(三)
- QML与c++交互学习笔记(四)
- QML与c++交互学习笔记(五)
- QML与c++交互学习笔记(七)
- QML与c++交互学习笔记
- c++中的信号与QML中的函数绑定(链接)起来 以及qml与c++交互重要笔记
- QML与c++交互学习笔记(六) 关于qt c++中创建对象,QML获取此对象数据问题
- QML与c++交互学习笔记(六) 关于qt c++中创建对象,QML获取此对象数据问题
- Qt5:QML:c++ 调用qml中的函数
- 关于QML中调用qt类中的信号,槽,成员函数,属性做记录
- QML中调用qt类中的信号 槽 成员函数和属性
- QML与c++交互学习
- postfix sasl身份验证
- QML与c++交互学习笔记(六) 关于qt c++中创建对象,QML获取此对象数据问题
- QML与c++交互学习笔记(七)
- warning: do not list domain haha.com.cn in BOTH mydestination and virtual_mailbox_domains
- 项目管理工具-Jira
- QML与c++交互学习笔记(八) qt c++直接调用QML中的函数, 直接设置属性
- Joomla源代码解析(六) JDocument 类的几个常用的方法
- 透过 Linux 内核看无锁编程
- 命令行管理和测试posfix邮件系统
- System.Web.Mail 邮件正文显示图片
- windows hosts 文件读写小工具
- Quick3D 学习文档
- 大端小端网络字节顺序
- 项目管理工具-Trac