【发布时间】:2015-02-17 17:13:05
【问题描述】:
我尝试使用 QQmlComponent 组件(view.engine(), QUrl::fromLocalFile("MyItem.qml"));然后 QOObject *object = component.create();但它让我 Qml 组件没有准备好。进一步尝试将 statusChanged 信号连接到一个槽函数,但它似乎没有加载新的 qml 组件。
QQuickView view;
view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));
QQmlComponent component(view.engine(), QUrl::fromLocalFile("MyItem.qml"));
QObject *object = component.create();
object->setParent(view.rootObject());
view.show()
【问题讨论】:
-
贴出你试过的代码。
-
QQuickView 视图; view.setSource(QUrl(QStringLiteral("qrc:/main.qml"))); QObject *rootObj = view.rootObject(); QQmlComponent 组件(view.engine(), QUrl::fromLocalFile("MyItem.qml")); QObject *object = component.create();对象->setParent(view.rootObject()); view.show()
-
我也尝试过在类的构造函数中创建一个类VViewerQml,_view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));连接(&_view, SIGNAL(statusChanged(QQuickView::Status)), 这个, SLOT(onViewStatusChanged(QQuickView::Status))); _view.show();并在插槽中 onViewStatusChanged(QQuickView::Status status) {if (status) { QQmlComponent *c = new QQmlComponent(_view.engine(), QUrl::fromLocalFile("MyItem.qml")); QQuickItem *i = qobject_cast
(c->create()); QQuickItem *i = qobject_cast (c->create()); // 添加 i 到 view.rootObject