如何在"QQuickItem"派生类中访问"QQmlApplicationEngine&q
How can I get access to object of `QQmlApplicationEngine` inside a `QQuickItem` derived class?
以下QtApp
的典型main
函数中的变量engine
是QQmlApplicationEngine
的有效实例。
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml")));
return app.exec();
}
是否可以访问QQuickItem
派生类的函数中的QQmlApplicationEngine
对象?如果是,如何?
class TestItem : public QQuickItem {
public:
TestItem();
SomeMethod() {
// Is it possible to get access to QQmlApplicationEngine here somehow ?
}
}
请注意,TestItem
在qml
端注册并显示在主窗口中。我知道我可以通过main
方法的QQmlApplicationEngine
。但是,我有一种预感,因为我的TestItem
是窗口的一部分并保存上下文。应该有一种方法可以获取对象或指向QQmlApplicationEngine
的指针,而不必从方法传递main
?
目标:使用QQmlApplicationEngine
,我可以通过这样做来访问main.qml
中的QQuickItem
:
QQuickItem *some_quick_item = qml_engine->rootObjects()[0]->findChild<QQuickItem*>("SomeQuickItem");
所以为了做到这一点,我想QQmlApplicationEngine
.如果有办法从一个内部访问其他QQuickItem
,那么请提出建议。
您可以使用此静态函数:
QQmlEngine::contextForObject(this)->engine();
当然,在尝试为其调用engine()
之前,contextForObject()
是否返回有效的指针可能是个好主意。
然后,您可以使用qobject_cast<QQmlApplicationEngine*>(engine)
,只要您的应用程序确实是基于QQmlApplicationEngine
的应用程序,它就应该为您提供所需的指针。
相关文章:
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 用于访问容器<T>数据成员的正确 API
- 访问者访问变体并返回不同类型时出错
- 尝试通过多个向量访问变量时,向量下标超出范围
- 无法访问嵌套类.类的使用无效
- 写入位置0x0000000C时发生访问冲突
- 我们可以访问一个不存在的联盟的成员吗
- C++从另一个类访问公共静态向量的正确方法是什么
- 我的简单if-else语句是如何无法访问的代码
- 从C++dll访问C#中的一行主要参数
- 概念TS检查忽略私有访问修饰符
- 访问被拒绝后,c++中的故障保护代码
- 在c++中访问int到类对象的映射时出错
- 我想访问std::unique_ptr中的一个特定元素
- 为什么示例代码访问IUnknown中已删除的内存
- C++:无法访问声明的受保护成员
- 通过指向指针数组的指针访问子类的属性
- 如何使用单独文件中的派生类访问友元函数对象