2016-04-25 12 views
0

QボタンPaneには22個のボタンがあり、そのラベルのanchors.horizontalCenter,anchors.verticalCentersourceSize.widthのプロパティ(属性?)を1か所にまとめたいと思います。これは可能ですか?一部/すべての「サブ」アイテムに対してプロパティ/属性を設定する方法はありますか?

Pane { 
    AllButtons: SetThoseProperties { 
     label.sourceSize.width: 32 
     label.anchors.horizontalCenter: parent.horizontalCenter 
     label.anchors.verticalCenter: parent.verticalCenter 
    } 
    Button { 
     id: button1 
     // maybe some reference to the AllButtons thing? 
     label: Image { 
      source: "qrc:/image1.svg" 
     } 
    } 
    Button { 
     id: button1 
     // maybe some reference to the AllButtons thing? 
     label: Image { 
      source: "qrc:/image1.svg" 
     } 
    } 
    // ... 
} 

の代わり:

Pane { 
    AllButtons: SetThoseProperties { 
     label.sourceSize.width: 32 
     label.anchors.horizontalCenter: parent.horizontalCenter 
     label.anchors.verticalCenter: parent.verticalCenter 
    } 
    Button { 
     id: button1 
     // maybe some reference to the AllButtons thing? 
     label: Image { 
      source: "qrc:/image1.svg" 
      sourceSize.width: 20 
      anchors.horizontalCenter: parent.horizontalCenter 
      anchors.verticalCenter: parent.verticalCenter 
     } 
    } 
    Button { 
     id: button2 
     // maybe some reference to the AllButtons thing? 
     label: Image { 
      source: "qrc:/image2.svg" 
      sourceSize.width: 20 
      anchors.horizontalCenter: parent.horizontalCenter 
      anchors.verticalCenter: parent.verticalCenter 
     } 
    } 
    // ... 
} 

答えて

2

、あなたが使用することができ、その定義済みのプロパティと一緒に新しいQMLコンポーネントを作成します。つまり

、私はこのような何かをしたいと思いますそれはスタンドアロンタイプとして。

既存のオブジェクトを右クリックし、リファクタリング→コンポーネントを別のファイルに移動することで、簡単に実行できます。 、

Column { 
    Repeater { 
     model: 10 
     CustomButton { 
      image: "qrc:/image" + index + ".svg" 
      onClicked: foos[index]() 
     } 
    } 
} 

これはあなたに10個のボタンの列を与える画像とそれぞれを:あなたはリピータを利用することができ、また

CustomButton { 
    image: "qrc:/image2.svg" 
} 

// CustomButton.qml 
Button { 
    property alias image: bImage.source 
    label: Image { 
     id: bImage 
     source: "qrc:/image2.svg" 
     sourceSize.width: 20 
     anchors.horizontalCenter: parent.horizontalCenter 
     anchors.verticalCenter: parent.verticalCenter 
    } 
} 

次に、あなたはそれが好きで使用することができますそのインデックスに対応するソース。各ボタンの機能を一連の機能に割り当てることができます。

CustomButton.qmlタイプを使用することを避けることもできます。リピーターは、本体にあるオブジェクトを何度も繰り返すため、オブジェクトのプロパティーを一度定義するとすべてのインスタンスに適用されます。

ListModelを指定すると、インデックス以外の各モデルアイテムに固有のカスタムプロパティを設定できます。代わりに、直接プロキシの別のプロパティを使用してプロパティ値を参照するの

最後に、あなたは簡単に複数のオブジェクトのプロパティを上書きしたい場合は、:

// for example in main.qml 
property int imageWidth: 20 

// CustomButton.qml 
... 
sourceSize.width: imageWidth 
... 

この方法imageWidth意志のチャンス、それを参照するすべてのsourceSize.widthを変更。

関連する問題