私は問題を抱えています。あなたが私を助けてくれることを願っています。
同じコンポーネントの異なるインスタンスを表示する複数の QQmlWidgets があります。コンポーネントは実行時に作成され、親ウィジェットの特定のプロパティを使用します。問題は、これらのコンポーネントに複数のネストされた項目があるため、読み込みが非常に遅いことです。アプリケーションのプリロード段階でそれらをすべて QQmlEngine にロードし、必要に応じてそれらを作成することにしました。したがって、すべての QQmlWidgets は同じ QQmlEngine と同じルート コンテキストを取得しました。異なるウィジェットの異なるプロパティを作成するために、コンポーネントのすべてのインスタンスを個別のコンテキスト (QQmlWidget ごとに 1 つ) で作成しています。作成後、新しく作成したオブジェクトの親項目を 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
前もって感謝します。