如何获取指定objectName的QObject
来源:互联网 发布:手机在线网页源码 编辑:程序博客网 时间:2024/06/16 06:51
如何获取指定objectName的QObject
作者 qyvlik
如下QML
代码,设置了一个 objectName
为 YOUR_OBJECT_NAME
的 QML
对象,现在需要在 c++
代码中获取到他。
//~ main.qmlimport QtQuick 2.0import QtQuick.Controls 2.0ApplicationWindow { visible: true QtObject { objectName: "YOUR_OBJECT_NAME" }}
如下 c++
代码,试图通过 findChild
函数来获取 objectName
为 YOUR_OBJECT_NAME
的 QML
对象,但是却返回空。
QQmlApplicationEngine engine;engine.load("main.qml");QList<QObject*> rootObjects = engine.rootObjects();QObject* root = Q_NULLPTR;foreach (QObject* iter, rootObjects) { if (iter->objectName() == "root") { root = iter; break; }}QObject* YOUR_OBJECT_NAME = root->findChild<QObject*>("YOUR_OBJECT_NAME", Qt::FindDirectChildrenOnly);qDebug() << "YOUR_OBJECT_NAME:" << YOUR_OBJECT_NAME;
在仔细阅读代码,以及测试,发现,上诉代码 root->findChild
只能获取到父类为 Item
的对象;父类为 QtObject
的对象,其父亲为 Window::contentItem
或者 ApplicationWindow::contentItem
。这里给出通过 objectName
获取 QML
对象的代码:
QObject *findClindByObjectNameFromQmlEngine(QQmlApplicationEngine *qmlEngine, QString objectName){ if (qmlEngine == Q_NULLPTR) { return Q_NULLPTR; } QList<QObject*> rootObjects = qmlEngine->rootObjects(); QObject* child = Q_NULLPTR; foreach (QObject* iter, rootObjects) { if (iter->inherits("QQuickItem")) { child = iter->findChild<QObject*>(objectName); break; } child = iter->findChild<QObject*>(objectName); if (child != Q_NULLPTR) { break; } QObject* contentItem = iter->property("contentItem").value<QObject*>(); if (contentItem != Q_NULLPTR) { child = contentItem->findChild<QObject*>(objectName); break; } } return child;}
阅读全文
1 0
- 如何获取指定objectName的QObject
- QObject对象 不指定父窗口的方法
- MBeanServer中获取ObjectName的某个属性值的参考代码
- 如何按指定的顺序获取数据
- 如何获取指定文件的大小?
- 如何获取指定文件的大小?
- 如何按指定的顺序获取数据
- C#如何获取指定问价夹的路径
- 如何获取指定线程的CPU占用率
- 如何获取指定文件的大小
- 如何获取指定id的下一个标签
- paip. 'QObject::QObject(const QObject&)' is private问题的解决.
- 如何给应用程序中的某一个窗口部件单独设置样式表?一个小细节,要设置它的objectName。
- self.nameVarPtr = [[ObjectName alloc] init] 和nameVarPtr = [[ObjectName alloc] init] 的区别
- QObject 的线程关联性
- QObject宏的解析
- 如何获取指定表的列和数据类型
- 如何在C#中获取指定网页源码的示例
- 学习笔记之JavaScript——知识点(1)
- about the noise
- 解释器模式--注重的解释的思想
- python字符串处理rstrip()、lstrip()、strip()函数使用
- CSU-ACM2017暑假集训比赛1 C
- 如何获取指定objectName的QObject
- AngularJS 指令对象的Scope属性
- 刷题——分糖果
- 欢迎使用CSDN-markdown编辑器
- 深搜的剪枝
- 堆和栈的区别(转过无数次的文章)
- 剑指Offer——树的子结构
- 电商项目实战——第一天(环境部署)2
- 截获所有以太网帧数据并进行具体分析