C++对象与QML属性
来源:互联网 发布:盛势网络剧剧照 编辑:程序博客网 时间:2024/06/15 18:53
导出
//QQuickView
QQuickview viewer;viewer.rootContext()-> setContextProperty("colorMaker",new ColorMaker);viewer.serSource(QUrl("qrc:///main.qml"));
从堆上分配了一个ColorMaker对象,然后注册为QML上下文是属性,名字为colorMaker。
viewer.rootContext()返回的是QQmlContext对象。QQmlContext类代表一个QML上下文,它的setContextProperty()方法可以为该上下文设置一个全局可见的属性。
QQmlApplicationEngine+Window
QQmlApplicationEngine engine;engine.rootContext()-> setContextProperty("colorMaker",new ColorMaker);engine.load(QUrl(QStringLiteral("qrc:///main.qml")))
在一个qml文件中:
Window { objectName: "rootObject" visible: true width: 360 height: 360 title: qsTr("Hello World") Text{ objectName: "textLabel"; text:"hello world" anchors.centerIn: parent font.pixelSize: 26 } Button{ anchors.right:parent.right anchors.rightMargin: 4; anchors.bottom: parent.bottom; anchors.bottomMargin: 4; text:"quit" objectName: "quitButton" }}
在cpp文件中可以这样使用:
QList<QObject *>rootObjects=engine.rootObjects();qDebug()<<rootObjects;//QQuickWindowQmlImpl(0x7f80xxxx,name="rootObject")//遍历rootOject的子对象int count=rootObjects.size();for(int i=0;i<count;i++){ if(rootObjects.at(i)->objectName()=="rootObject"){ root=rootObjects.at(i); break; }}new ChangeQmlColor(root);QObject *quitbutton=root->findChild<QObject *>("quitButton");QObject *textLabel=root->findChild<QObject *>("textLabel");
bool bRet=QMetaObject::invokeMethod(textLabel,"setText",Q_ARG(QString,"world hello"));qDebug()<<"call setText return "<<bRet;textLabel->setProperty("color"QColor::fromRgb(255,0,0));bRet=QMeatObject::invokeMethod(textLAbel,"doLayout");qDebug()<<"call dolayout return "<<bRet;
上述通过textLabel找到了textLabel对象,使用invokeMEthod()调用setText()方法来改变textLabel的文本,这个注定失败;因为QML中Text对象对应着C++的QQuickText类,而QQuickText没有名为“setText”的槽或者可调用方法。
阅读全文
0 0
- C++对象与QML属性
- QML属性和对象
- QML学习:对象和属性
- qml中的属性绑定与赋值
- QML静态值与属性绑定
- QML静态值与属性绑定
- 在C++中与QML对象交互
- QML类与对象列表或分组
- C++与QML交互1:在C++中调用QML对象
- C++与QML交互,把C++对象特性暴露到QML中
- Js对象与属性
- XMLHttpRequest 对象与属性
- QML各个属性详解
- QML各个属性详解
- QML属性绑定
- QML States属性
- qml学习---------------Text属性
- qml学习---------------Button属性
- Fleury(弗罗莱)算法求欧拉路径
- 学习java架构的笔记
- 有了这张对照表,再也不怕写MyBatis代码了
- SSM(一)框架的整合
- java实现斐波那契数列
- C++对象与QML属性
- Java Jvm运行机制原理
- C++项目中的extern "C" {}
- Python中的编码问题
- 归并排序
- ZooKeeper工作原理
- 简单的源码解析
- 开源自定义可折叠按钮
- IntelliJ Idea 2017 免费激活方法