OS-X 10.8.4 を搭載した Mac で Qt 5.1 と QtQuick 2.0 を実行しています。
次のように、Transform: Rotation {} 要素の可変角度を設定するのに問題があります。
transform: Rotation {
axis { x: 0; y: 1; z: 0 }
angle: PathView.angle
}
ここで、PathView.angle は画像要素ごとに異なります。カバー フロー スタイルのコンテナーのコード here に従いましたが、その例も機能しません。
要約すると、一番下のコードは以下を生成します (コメントのケース 1 を参照)。
変数 PathAttribute 角度を使用してデリゲートの四角形の角度を取得します。
PathAttribute { name: "angle"; value: somevalue }
次に、次を使用して角度を設定します。
rotation: PathView.angle
しかし、これは私が望むものではありません。なぜなら、回転軸は z 軸を中心に定義されているからです (y を中心に回転角度を定義する必要があります)。だから私は(ケース2)に近いものが欲しい:
これで回転軸は正しくなりましたが、各長方形の角度はすべて一定です (コードで定義されているように 60 度)。
以下のコードのケース 3 は、私が作業しようとしているものですが、可変角度が Transform: Rotation {} で機能しないように見えるため、エラーが発生します (画像コンテナーごとに 1 回)。
Unable to assign [undefined] to double
これを機能させる方法について何か提案はありますか?
ありがとう!
以下は、私がやろうとしていることを示す最も単純な QML コードです。
import QtQuick 2.0
Rectangle {
id: mainRect
width: 1024; height: 300
// Flow View:
Rectangle {
width: parent.width; height: parent.height
color: "gray"
PathView {
id: myPV
delegate: pathdelegate
anchors.fill: parent
model: 11 // provide a range of indices
Keys.onLeftPressed: if (!moving && interactive) incrementCurrentIndex()
Keys.onRightPressed: if (!moving && interactive) decrementCurrentIndex()
preferredHighlightBegin: 0.5
preferredHighlightEnd: 0.5
focus: true
interactive: true
path: Path {
id: pathElement
startX: 0; startY: myPV.height / 2
PathAttribute { name: "z"; value: 0 }
PathAttribute { name: "angle"; value: 60 }
PathAttribute { name: "scale"; value: 0.5 }
PathLine { x: myPV.width / 2; y: myPV.height / 2; }
PathAttribute { name: "z"; value: 100 }
PathAttribute { name: "angle"; value: 0 }
PathAttribute { name: "scale"; value: 1.0 }
PathLine { x: myPV.width; y: myPV.height / 2; }
PathAttribute { name: "z"; value: 0 }
PathAttribute { name: "angle"; value: -60 }
PathAttribute { name: "scale"; value: 0.5 }
}
}
// Delegate Component:
Component {
id: pathdelegate
Rectangle {
id: rect
width: 256; height: 256
z: PathView.z
scale: PathView.scale
color: "black"
border.color: "white"
border.width: 3
// Case 1: This works:
rotation: PathView.angle
//Case 2: This works:
//transform: Rotation {
// axis { x: 0; y: 1; z: 0 }
// angle: 60
//}
// Case 3: This is the case that I need to work:
// This DOES NOT work:
// transform: Rotation {
// axis { x: 0; y: 1; z: 0 }
// angle: PathView.angle
//}
}
} // End: Delegate Component
} // End: Flow View:
} // End: mainRect