【发布时间】:2015-05-01 15:01:53
【问题描述】:
我已将 ObjectName 设置为 main 中的一个类,并希望从另一个类访问该对象:
main.cpp
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
ImageProvider *imageProvider = new ImageProvider(&engine,QQmlImageProviderBase::Image,0);
PageBuffer p;
p.setObjectName("Object");
engine.rootContext()->setContextProperty("p",&p);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
engine.addImageProvider("images", imageProvider);
return app.exec();
}
我试图从中访问 PageBuffer p 的类:
QImage ImageProvider ::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
{
QQuickWindow *window = qobject_cast<QQuickWindow*>(m_engine->rootObjects()[0]);
PageBuffer *p = window->findChild<PageBuffer *>("Object");
cout<<p->current_box; //error at runtime
QImage e;
e.load("Pic4.jpg");
return e;
}
但我似乎无法访问对象 PageBuffer 的任何成员,可能是因为指针,我如何才能访问对象 p 中的函数?
【问题讨论】:
-
p实际上是一个有效指针而不是空指针吗? -
是的,我刚刚检查了它是 NULL,这意味着我试图从 QQuickWindow 获得正确的对象
-
我还检查了 p 实例不是子实例,因为我在 QQuickWindow 中打印了每个子对象的所有对象名称,它没有显示我在实例 p 的主函数中设置的指定对象名称跨度>