2016-03-27 123 views
0

の親を設定することができません。次のように私はQMLで動的コンポーネントを作成しています:ここで動的に作成QMLコンポーネント

var component = Qt.createComponent("PlayerWindow.qml") 
if (component.status != component.errorString()) 
    console.log(component.errorString()) 
var playerWin = component.createObject(rootWindow); 

rootWindowは私のメインのアプリケーションウィンドウです。

Window { 
    id: playerWindow 
    width: parent.width 
    height: parent.height 

    Component.onCompleted: { 
     console.log(parent.width) 
     console.log(rootWindow.height) 
    } 
} 

事がparent.widthrootWindow.widthの値が実際に異なっていると、ウィンドウが表示されたときに、これがまた明らかであるということです:今、PlayerWindowはと非常に簡単です。ただし、createObjectコールでは、rootWindowが親として設定されています。だから私はそこで何が起こっているのか分からないが、動的に作成されているときにコンポーネントの親を設定する正しい方法であるかどうかを知りたかった。

答えて

1

console.log(parent)をコードに追加してください。 qml: QQuickRootItem(0x1e3e4e0)のようなものが表示されます。 QtのドキュメントをチェックするとItem.parent()Itemを返しますが、WindowsはのItemではありません。また、ドキュメントから:

そう...

A QQuickWindowは常に単一の目に見えないルートアイテムを持っている、あなたのケースでparentrootWindowは異なるオブジェクトです。

P.S. Qt.createComponentがエラーを返しますが、component.createObjectが実行されるため、コード内の動的オブジェクトの作成にエラーが発生する可能性があります。 Qt documentationからコードをコピーするだけです。

関連する問題