我有一个问题,希望你能帮助我。
我有多个 QQmlWidgets 应该显示相同组件的不同实例。组件是在运行时创建的,并使用其父小部件的特定属性。问题是,这些组件中有多个嵌套项,因此它们的加载速度非常慢。我决定在应用程序预加载阶段将它们全部加载到 QQmlEngine,并在必要时创建它们。所以我所有的 QQmlWidgets 都有相同的 QQmlEngine 和相同的根上下文。为了区分不同小部件的属性,我在单独的上下文中创建组件的每个实例(每个 QQmlWidget 一个)。创建后,我将新创建对象的父项设置为 QQmlWidget 的根项;问题是根项在动态创建的对象中被引用,他们找不到它。你能提出任何解决方案吗?我'
// main.cpp
QQmlEngine* e = new QQmlEngine;
QWidget* ww1 = new QWidget;
QWidget* ww2 = new QWidget;
QQuickWidget* w1 = new QQuickWidget(e, ww1);
QQuickWidget* w2 = new QQuickWidget(e, ww2);
w1->setSource(QUrl::fromLocalFile("main.qml"));
w2->setSource(QUrl::fromLocalFile("main.qml"));
QQmlComponent* comp = new QQmlComponent(e, "comp.qml");
QQmlContext* c1 = new QQmlContext(e);
QQmlContext* c2 = new QQmlContext(e);
QQuickItem* it1 = qobject_cast<QQuickItem*>(comp->create(c1));
it1->setParentItem(w1->rootObject());
QQuickItem* it2 = qobject_cast<QQuickItem*>(comp->create(c2));
it2->setParentItem(w2->rootObject());
ww1->show();
ww2->show();
//main.qml
Rectangle {
id: root
}
//comp.qml
Rectangle {
anchors.top : root.top
}
错误:
comp.qml - ReferenceError: root is not defined
提前致谢。