1

私は問題を抱えています。あなたが私を助けてくれることを願っています。

同じコンポーネントの異なるインスタンスを表示する複数の 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

前もって感謝します。

4

1 に答える 1