QMLã®ã¢ãã«ãã¥ãŒïŒ
- QMLã®ã¢ãã«ãã¥ãŒã ããŒããŒããå ¥é
- QMLã®ã¢ãã«ãã¥ãŒã ããŒã1ïŒäºåäœæãããã³ã³ããŒãã³ããã¥ãŒ
- QMLã®ã¢ãã«ãã¥ãŒã ããŒã2ïŒã«ã¹ã¿ã ãã¥ãŒ
- QMLã®ã¢ãã«ãã¥ãŒã ããŒã3ïŒQMLããã³JavaScriptã®ã¢ãã«
- QMLã®ã¢ãã«ãã¥ãŒã ããŒã4ïŒC ++ã¢ãã«
1. PathView
ãã®ã³ã³ããŒãã³ãã¯ãæ¢è£œã®ãã£ã¹ãã¬ã€ã®åãã°ã«ãŒãã«éšåçã«å±ããŸãããèŠçŽ ã®é 眮ã¯ãŠãŒã¶ãŒã«ãã£ãŠå®å šã«å¶åŸ¡ãããŸãã ããã¯ãã³ã³ããŒãã³ããçŽç·ãæ²ç·ãå匧ã§æ§æãããç¹å®ã®ãã¹ã«æ²¿ã£ãŠèŠçŽ ãé 眮ã§ãããšããäºå®ã«ãã£ãŠéæãããŸãã ãã¹ã¯éããŠããå ŽåããããŸãããå¿ ãããå¿ èŠã§ã¯ãããŸããã ãã¹å šäœã§ãèŠçŽ ã®ããããã£ãå¶åŸ¡ããããšãã§ããŸãã ããšãã°ãç¹å®ã®å Žæã§èŠçŽ ã倧ããããããšãã§ãããŠãŒã¶ãŒã«è¿ãããã«èŠããŸãã ããã«å ããŠããŠãŒã¶ãŒããé ãé¢ããŠããããã«èŠããèŠçŽ ãåéæã«ããããšãã§ããŸãã äžè¬ã«ãèŠçŽ ã®å€èŠ³ã調æŽããå€ãã®å¯èœæ§ããããŸãã
PathViewã®äž»ãªç®çã¯ãããŒã¿ã衚瀺ããã ãã§ãªããèŠèŠçã«é åçã«èŠããããšã§ãã CoverFlowïŒãã«ãã¡ãã£ã¢ãã¬ãŒã€ãŒã§ã¢ã«ãã ã«ããŒã衚瀺ããããã®äžè¬çãªãªãã·ã§ã³ïŒãªã©ã®åŠçãè¡ãããã®ã¯ãã®ã³ã³ããŒãã³ãã§ãã
1ïŒç°¡åãªäŸ
åçŽãªäŸããå§ããŸããããæ²ç·ã«æ²¿ã£ãŠèŠçŽ ãé 眮ããŸãïŒå®å šã«æ£ç¢ºã«ããããã«ãäºæ¬¡ããžã§æ²ç·ã䜿çšãããŸãïŒ
import QtQuick 2.0 Rectangle { width: 500 height: 200 PathView { id: view anchors.fill: parent model: 30 path: Path { startX: 0 startY: 0 PathQuad { x: view.width y: 0 controlX: view.width / 2 controlY: view.height } } delegate: Rectangle { width: 20 height: 20 color: "orchid" border { color: "black" width: 1 } } } }
ãã¹ã¯Pathåã®ãªããžã§ã¯ãã䜿çšããŠèšè¿°ããããã®ãã¹ã®äžéšãèšè¿°ãããªããžã§ã¯ããé 眮ããŸãã ãã®äŸã§ã¯ããã¹ã¯æ²ç·ã®1ã€ã®ã»ã¯ã·ã§ã³ã§æ§æãããŠããŸãã
startXããã³startYãã©ã¡ãŒã¿ãŒã¯ããã¹ã®éå§ç¹ã®åº§æšãèšè¿°ããŸãã æåŸã®ã»ã¯ã·ã§ã³ã®çµããã§çµãããŸãã å察ã«ãããããã¯ãã©ã¡ãŒã¿ãŒxãšyã䜿çšããŠãéå§ãæå®ããã®ã§ã¯ãªããçµäºãæå®ããŸãã ãã®å Žåãæ²ç·ã¯3ã€ã®ãã€ã³ãã«åºã¥ããŠäœæãããŸããçµäºãšéå§ã«å ããŠãæ²ããäŸåããå¥ã®åº§æšãå¿ èŠã§ãã ãã®åº§æšã¯ãcontrolledXãšcontrolYã§ãã ãã¹ã»ã°ã¡ã³ãã®å Žåã座æšã¯èŠªãåºæºã«ããŠèšå®ãããŸãã ãã¹ãªããžã§ã¯ãã ãŸãããã¹ã®å§ç¹ãåºæºã«ããŠåº§æšãèšå®ã§ããç¹å¥ãªããããã£ããããŸãã ãã®ãããªããããã£ã«ã¯ãçžå¯Ÿãã¬ãã£ãã¯ã¹ïŒäŸãã°ãrelativeControlYïŒããããŸãã
ç§ãã¡ãåŸããã®ãèŠãŠã¿ãŸãããïŒ

ãã¹ãŠã®èŠçŽ ã¯PathViewã«é 眮ããããããèŠçŽ ãããŠã¹ã§ãã©ãã°ããŠãã¹ã«æ²¿ã£ãŠç§»åã§ããŸãã
2ïŒéè·¯
åã®äŸã§ã¯ããã¹ã¯éããããŠããŸããã èŠçŽ ããã®ãã¹ã«å°éãããšããã®èŠçŽ ãæåã«è¡šç€ºãããŸãã ãã¹ãéããããšã¯ããã»ã©é£ãããããŸããã ãããè¡ãã«ã¯ãéå§ãšçµäºã®åº§æšãäžèŽããå¿ èŠããããŸãã Pathãªããžã§ã¯ãã«ã¯ãéããŠãããã©ãããåæ ããç¹å¥ãªclosedããããã£ããããŸãã
æåã®äŸãå°ãããçŽãã2ã€ã®ããžã§æ²ç·ïŒPathQuadïŒããéãããã¹ãäœæããŸãã
import QtQuick 2.0 Rectangle { width: 400 height: 400 PathView { id: view anchors.fill: parent model: 50 path: Path { startX: view.width / 2 startY: view.height / 2 PathQuad { relativeX: 0 y: view.height controlX: view.width controlY: 0 } PathQuad { relativeX: 0 y: view.height / 2 controlX: 0 controlY: 0 } } delegate: Rectangle { width: 20 height: 20 color: "hotpink" border { color: "black" width: 1 } } } }
ãã¹ã®åèŠçŽ ã¯ãåã®èŠçŽ ãçµäºãããšããããå§ãŸããŸãã æåŸã®ã»ã°ã¡ã³ãã¯ãå šäœã®æ ãå§ãŸããšããã§çµãããŸãã
ãã®çµæã次ã®å³ãåŸãããŸãã

3ïŒãã¹èŠçŽ
èæ ®ãããæ²ç·ã«å ããŠãQtQuickã«ã¯3次ããžãšæ²ç·ããããŸã-äºæ¬¡æ²ç·ãšåãã§ããã2ã€ã®å¶åŸ¡ç¹ïŒPathCubicïŒãä»»æã®æ°ã®ç¹ïŒPathCurveïŒãæã€æ²ç·ãã€ãŸãå匧ã§ãã åã®äžéšïŒPathArkïŒãšçŽç·ïŒPathLineïŒã ããã«ãPathSvgã³ã³ããŒãã³ãã䜿çšããŠãSVG圢åŒã§æ²ç·ãå®çŸ©ã§ããŸãã ããããã¹ãŠã®ã³ã³ããŒãã³ããçµã¿åãããŠããããããæ£ãããã¹ãäœæã§ããŸãã
èŠçŽ ãšãã®ãã©ã¡ãŒã¿ãŒã®é 眮ãå¶åŸ¡ããªãè¿œå ã®ã³ã³ããŒãã³ãããããŸãã ãã®1ã€ãPathPercentã§ããã¹ã®ã»ã¯ã·ã§ã³ã«æ²¿ã£ãèŠçŽ ã®ååžãå¶åŸ¡ã§ããŸãã ããã©ã«ãã§ã¯ãèŠçŽ ã¯åçã«åæ£ãããŸããããã®ã³ã³ããŒãã³ãã䜿çšããŠããã¹ã®ã©ã®éšåã«èŠçŽ ãããã€é 眮ããããæå®ã§ããŸãã ãããè¡ãã«ã¯ãPathPercentãªããžã§ã¯ãããã¹ã»ã°ã¡ã³ãã®åŸã«é 眮ããŸãããã®å€ãã©ã¡ãŒã¿ãŒã«ã¯ããã®ãã¹ã®èŠçŽ ã®äžéšãå«ãŸããŸãïŒããšãã°ãèŠçŽ ã®ååã¯0.5ïŒã
ãããäŸãšããŠèããŠãã ããïŒ
import QtQuick 2.0 Rectangle { width: 500 height: 200 PathView { id: view anchors.fill: parent model: 20 path: Path { startX: 0 startY: height PathCurve { x: view.width / 5 y: view.height / 2 } PathCurve { x: view.width / 5 * 2 y: view.height / 4 } PathPercent { value: 0.49 } PathLine { x: view.width / 5 * 3 y: view.height / 4 } PathPercent { value: 0.51 } PathCurve { x: view.width / 5 * 4 y: view.height / 2 } PathCurve { x: view.width y: view.height } PathPercent { value: 1 } } delegate: Rectangle { width: 20 height: 20 color: "orchid" border { color: "black" width: 1 } } } }
2ã€ã®å匧ãšäžå€®ã«1ã€ã®çŽç·ã®ãã¹ãäœæããŸãã åæã«ãèŠçŽ ããã¹ã®æ¥µç«¯ãªéšåã«éäžããŠããããšã確èªããŸãã ãããŠãäžå€®ã»ã¯ã·ã§ã³ã«ã¯èŠçŽ ã1ã€ã ãå«ãŸããŠããããšãããããŸãã

ãã¹ã®ãã1ã€ã®è¿œå èŠçŽ ã¯PathAttributeã§ããããã«ããããã¹äžã®äœçœ®ã«å¿ããŠãèŠçŽ ã®ãã©ã¡ãŒã¿ãŒãå¶åŸ¡ã§ããŸãã ããªã²ãŒãã§ã¯ããããã®ãã©ã¡ãŒã¿ãŒã¯ãæ·»ä»ãããPathView.nameããããã£ãä»ããŠäœ¿çšã§ããŸãããã®ããããã£ã§ã¯ãnameããããã£ã䜿çšããŠååãèšå®ãããŸãã
PathAttributeã¯ããã©ã¡ãŒã¿ãé 眮ãããŠãããã¹å ã®ãã€ã³ãã§ãã©ã¡ãŒã¿å€ãèšå®ããŸãã 2ã€ã®PathAttributeãªããžã§ã¯ãã®éã«ãããã¹ã®éšåã®èŠçŽ ã®ãã©ã¡ãŒã¿ãŒã®å€ã¯ãããPathAttributeã®å€ããå¥ã®PathAttributeã®å€ã«ã¹ã ãŒãºã«ç§»åããŸãã çåŽã«ãã®ãªããžã§ã¯ãããªãå Žåãå€ã¯ãŒãã«ãªããŸãã
äžå€®ã®ãªããžã§ã¯ãã2åã«ããæãå€åŽã®èŠçŽ ãåéæã«ããŸãããã
import QtQuick 2.0 Rectangle { property int itemSize: 20 width: 500 height: 200 PathView { id: view anchors.fill: parent model: 20 path: Path { startX: 0 startY: height PathAttribute { name: "size"; value: itemSize } PathAttribute { name: "opacity"; value: 0.5 } PathCurve { x: view.width / 5 y: view.height / 2 } PathCurve { x: view.width / 5 * 2 y: view.height / 4 } PathPercent { value: 0.49 } PathAttribute { name: "size"; value: itemSize * 2 } PathAttribute { name: "opacity"; value: 1 } PathLine { x: view.width / 5 * 3 y: view.height / 4 } PathAttribute { name: "size"; value: itemSize * 2 } PathAttribute { name: "opacity"; value: 1 } PathPercent { value: 0.51 } PathCurve { x: view.width / 5 * 4 y: view.height / 2 } PathCurve { x: view.width y: view.height } PathPercent { value: 1 } PathAttribute { name: "size"; value: itemSize } PathAttribute { name: "opacity"; value: 0.5 } } delegate: Rectangle { width: PathView.size height: PathView.size color: "orchid" opacity: PathView.opacity border { color: "black" width: 1 } } } }
ãããŠããµã€ãºãšéæ床ãæ»ããã«å€åããèŠçŽ ãååŸããŸãã

ã¹ã ãŒãºãªç§»è¡ãå¿ èŠãªãããç°ãªããµã€ãºã®èŠçŽ ãäœæããå¿ èŠãããå Žåããã¹ã®ãã®ãããªåã»ã¯ã·ã§ã³ãPathViewãªããžã§ã¯ãã§å²ã¿ãé£æ¥ããã»ã¯ã·ã§ã³ã®éã«ãé·ããŒãã®ãã¹ã®è¿œå ã»ã¯ã·ã§ã³ãæ¿å ¥ããŸãã ãããããµã€ãºããŒãã§ãããããããã«ã¯èŠçŽ ããªããããã¯è¡šç€ºãããŸããã
ãã¢ã®ããã«ãåã®äŸãå°ãå€æŽããPathAttributeãªããžã§ã¯ãã§å²ãŸãããã¹ã®3ã€ã®éšåãããããäœæãããããã®éšåã®éã«é·ããŒãã®PathLineãªããžã§ã¯ããé 眮ããŸãã
import QtQuick 2.0 Rectangle { property int itemSize: 20 width: 500 height: 200 PathView { id: view anchors.fill: parent model: 20 path: Path { startX: 0 startY: height PathAttribute { name: "size"; value: itemSize } PathAttribute { name: "opacity"; value: 0.5 } PathCurve { x: view.width / 5 y: view.height / 2 } PathCurve { x: view.width / 5 * 2 y: view.height / 4 } PathAttribute { name: "size"; value: itemSize } PathAttribute { name: "opacity"; value: 0.5 } PathPercent { value: 0.49 } PathLine { relativeX: 0; relativeY: 0 } // PathAttribute { name: "size"; value: itemSize * 2 } PathAttribute { name: "opacity"; value: 1 } PathLine { x: view.width / 5 * 3 y: view.height / 4 } PathAttribute { name: "size"; value: itemSize * 2 } PathAttribute { name: "opacity"; value: 1 } PathPercent { value: 0.51 } PathLine { relativeX: 0; relativeY: 0 } // PathAttribute { name: "size"; value: itemSize } PathAttribute { name: "opacity"; value: 0.5 } PathCurve { x: view.width / 5 * 4 y: view.height / 2 } PathCurve { x: view.width y: view.height } PathPercent { value: 1 } PathAttribute { name: "size"; value: itemSize } PathAttribute { name: "opacity"; value: 0.5 } } delegate: Rectangle { width: PathView.size height: PathView.size color: "orchid" opacity: PathView.opacity border { color: "black" width: 1 } } } }
ãã®çµæããšããžã«å°ããªåéæã®èŠçŽ ããäžå€®ã«1ã€ã®å€§ããªäžéæãªèŠçŽ ãåŸãããŸãã

4ïŒCoverFlow
ã»ã¯ã·ã§ã³ã®åé ã§ãCoverFlowã«ã€ããŠèšåããŸããã ãã®å ŽæãŸã§èªãã 人ãžã®ããŒãã¹ãšããŠãå°ããªå®è£ äŸ:)
import QtQuick 2.0 Rectangle { property int itemAngle: 60 property int itemSize: 300 width: 1200 height: 400 ListModel { id: dataModel ListElement { color: "orange" text: "first" } ListElement { color: "lightgreen" text: "second" } ListElement { color: "orchid" text: "third" } ListElement { color: "tomato" text: "fourth" } ListElement { color: "skyblue" text: "fifth" } ListElement { color: "hotpink" text: "sixth" } ListElement { color: "darkseagreen" text: "seventh" } } PathView { id: view anchors.fill: parent model: dataModel pathItemCount: 6 path: Path { startX: 0 startY: height / 2 PathPercent { value: 0.0 } PathAttribute { name: "z"; value: 0 } PathAttribute { name: "angle"; value: itemAngle } PathAttribute { name: "origin"; value: 0 } PathLine { x: (view.width - itemSize) / 2 y: view.height / 2 } PathAttribute { name: "angle"; value: itemAngle } PathAttribute { name: "origin"; value: 0 } PathPercent { value: 0.49 } PathAttribute { name: "z"; value: 10 } PathLine { relativeX: 0; relativeY: 0 } PathAttribute { name: "angle"; value: 0 } PathLine { x: (view.width - itemSize) / 2 + itemSize y: view.height / 2 } PathAttribute { name: "angle"; value: 0 } PathPercent { value: 0.51 } PathLine { relativeX: 0; relativeY: 0 } PathAttribute { name: "z"; value: 10 } PathAttribute { name: "angle"; value: -itemAngle } PathAttribute { name: "origin"; value: itemSize } PathLine { x: view.width y: view.height / 2 } PathPercent { value: 1 } PathAttribute { name: "z"; value: 0 } PathAttribute { name: "angle"; value: -itemAngle } PathAttribute { name: "origin"; value: itemSize } } delegate: Rectangle { property real rotationAngle: PathView.angle property real rotationOrigin: PathView.origin width: itemSize height: width z: PathView.z color: model.color border { color: "black" width: 1 } transform: Rotation { axis { x: 0; y: 1; z: 0 } angle: rotationAngle origin.x: rotationOrigin } Text { anchors.centerIn: parent font.pointSize: 32 text: model.text } } } }
ãŸããçµæãèŠãŠãããå®è£ ãåæããŸãã ãããŠã次ã®ãããªãã®ãåŸãŸããïŒ

Y軞ãäžå¿ã«äžå€®ã®èŠçŽ ãé€ããã¹ãŠã®èŠçŽ ãå転ãããããã«ãRotationã³ã³ããŒãã³ãã䜿çšããŠããªã²ãŒãã®å転å€æãèšå®ããŸãã axisããããã£ã§ã¯ããªããžã§ã¯ããå転ãã軞ã«å¯ŸããŠ1ãèšå®ããå¿ èŠããããŸãã
èŠçŽ ã«ã€ããŠã¯ãããã€ãã®ãã©ã¡ãŒã¿ãŒãå€æŽããŸãïŒå転è§åºŠãZ軞ã«æ²¿ã£ãäœçœ®ãããã³è»¢æç¹ïŒåç¹ïŒã è§åºŠã䜿çšãããšããã¹ãŠãåçŽã§æçœã«ãªããŸããå·ŠåŽã®èŠçŽ ã¯60床ãå³åŽã®èŠçŽ ã¯ãããã-60床å転ããŸãã ãã ããæ®ãã®ãã©ã¡ãŒã¿ãŒã«ã€ããŠã¯ã詳现ã«åæ¢ãã䟡å€ããããŸãã
Z座æšã¯ãã©ã®èŠçŽ ããäžãã«ãããã決å®ããŸãã 2ã€ã®ãªããžã§ã¯ããã©ããã§äº€å·®ããå ŽåãZããå°ãããªããžã§ã¯ãã¯ãZ座æšã倧ãããªããžã§ã¯ãã«ãã£ãŠãããã¯ãããŸãã ããã©ã«ãã§ã¯ãPathViewã§ã¯ã倧ããªã€ã³ããã¯ã¹ãæã€èŠçŽ ãåã®èŠçŽ ããªãŒããŒã©ã€ãããŸãã CoverFlowã§ã¯ãå·ŠåŽã®èŠçŽ ã«ã€ããŠãä»ã®æ¹æ³ãå¿ èŠã§ãããããé«ãããšã¯ãäžå¿ã«è¿ãèŠçŽ ã§ãã äœãè¡ãããªãå ŽåãæåŸã®èŠçŽ ãæåŸãã2çªç®ã®èŠçŽ ã«åãŸãããã®èŠçŽ ããã®åã®èŠçŽ ãªã©ã«é 眮ãããŸãã ãããã£ãŠãZ座æšãå€æŽããŠãèŠçŽ ãäžå¿ããé ãããã»ã©ãäžãã«ãªãããã«ããŸãã ãã®äŸã§ã¯ãèŠçŽ ãéãªãåããªããããªãµã€ãºã§ããããŠã£ã³ããŠã®å¹ ããããã«å°ãããããšãéãªããããã«è¡šç€ºãããŸãã

æåŸã«ãã¿ãŒãã³ã°ãã€ã³ãã é·æ¹åœ¢ã®åšãã«ãå転ãçºçããç¹ãèšå®ããŸãã ããã©ã«ãã§ã¯ãããã¯å·Šäžé ãã€ãŸã 座æšïŒ0ã0ïŒãæã€ãã€ã³ãã ãªããªã èŠçŽ ãY軞ã®åšãã«å転ãããå ŽåãY座æšèªäœã¯ããã§ã¯éèŠã§ã¯ãããŸããã ããããXã«æ³šæãã䟡å€ã¯ãããŸãã å·ŠåŽã®èŠçŽ ã®å Žåããã®åº§æšã0ã«èšå®ããèŠçŽ ã巊端ã®åšãã«å転ããããšãå³ç«¯ãèŠèŠçã«ããã«é ããªãããšãããããŸãã å³åŽã®èŠçŽ ã«å¯ŸããŠåãããšãè¡ããšãå·ŠåŽã®èŠçŽ ããèªåèªèº«ããããå³åŽã®èŠçŽ ããèªåèªèº«ã«åãã£ãŠãå転ãããããšãããããŸãã 巊端ãè¿ããªããå³åŽãããã«è¿ããªããå³åŽã倧ãããªããŸãã ãã®çµæãå·Šãšå³ã®èŠçŽ ã®ãµã€ãºãç°ãªããšããç¶æ³ã«ãªããŸãããããã¯ãŸã£ããå¿ èŠãããŸããã ãã¹ãŠã®èŠçŽ ããèªåãããå転ãããŸãããã®ãããå³åŽã®èŠçŽ ã§ã¯ããããããã€ã³ããå³äžé ã«ç§»åããŠãå³ç«¯ãäžå¿ã«å転ããããã«ããŸãã
åã®äŸã§ã¯ãPathViewã¯ã¢ãã«ã®ãã¹ãŠã®èŠçŽ ã衚瀺ããŸããã åæã«è¡šç€ºãããã¢ã€ãã ã®æ°ã¯ãpathItemCountãã©ã¡ãŒã¿ãŒã䜿çšããŠå¶éã§ããŸãã ããã§ã¯6ã«èšå®ããŸãã
èŠçŽãããšãQMLã®å©ããåããŠãCoverFlowãªã©ã®ããŒã¿ã衚瀺ãããã®ãããªäžè¬çãªæ¹æ³ã¯ãæšæºã©ã€ãã©ãªã®èŠçŽ ã䜿çšããŠéåžžã«ç°¡åã«å®è£ ã§ããŸãã
ç°¡åãªèŠçŽ
PathViewã¯ãäž»ã«é åçãªã€ã³ã¿ãŒãã§ã€ã¹ã®äœæã«çŠç¹ãåãããã³ã³ããŒãã³ãã§ãã ãã®ããŒã«ã«ã¯å€§ããªæè»æ§ããããçŽç·ã ãã§ãªãä»»æã®ãã¹ã«èŠçŽ ãé 眮ãããããã¹ã®ã©ã®éšåã«ãããã«å¿ããŠããªã²ãŒãã®ãã©ã¡ãŒã¿ãŒãå€æŽãããã§ããŸãã
2.ããªãã®æåº
QMLã¯ããã®ãããªããŒãºãããå Žåã«ãã¬ãŒã³ããŒã·ã§ã³ãè¡ãããã®ããŒã«ãæäŸããŸãã ããã¯ããã»ã©é£ãããªããåçŽãªèŠçŽ ãçµã¿åãããããšã§å®çŸãããŸãã
ãŸããã¢ãã«ã®åèŠçŽ ã«ããªã²ãŒããªããžã§ã¯ããäœæããå¿ èŠããããŸãã ãã®ããã«ãç¹å¥ãªã³ã³ããŒãã³ã-Repeaterã䜿çšããŸãã 圌ã¯ãèŠçŽ ã®äœæãããžã·ã§ãã³ã°ãªã©ã«å°å¿µããŠããŸãã 圌ã¯äœãããŸããã * Viewã³ã³ããŒãã³ããšåãæ¹æ³ã§äœ¿çšãããŸããã¢ãã«ãšããªã²ãŒããäžããã¢ãã«ã®åèŠçŽ ã®ããªã²ãŒãã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã
äœçœ®æ±ºãã«ã¯ãRepeaterãé 眮ããRowããã³ColumnèŠçŽ ã䜿çšã§ããŸãã Repeaterã䜿çšããŠäœæãããèŠçŽ ã¯ããã®èŠªã®åã«ãªããŸãã ãã®å Žåã¯ãè¡ãŸãã¯åã§ãããããèŠçŽ ãè¡ãŸãã¯åãšããŠé 眮ããŸãã
ããã²ãŒã·ã§ã³ã¿ã¹ã¯ã®ã¿ãæ®ããŸãã èŠçŽ ãéåžžã«å€ãããã¹ãŠã®èŠçŽ ãå²ãåœãŠãããã¹ããŒã¹ã«åãŸããªãå Žåã¯ãã¹ã¯ããŒã«èŠçŽ ãå®è£ ããå¿ èŠããããŸãã ããã¯ãã¿ããã¹ã¯ãªãŒã³ãŸãã¯åãããŠã¹ã®ããŠã¹ãã€ãŒã«ãšãžã§ã¹ãã£ãŒãåŠçããèŠçŽ ãã¹ã¯ããŒã«ããFlickableã³ã³ããŒãã³ãã䜿çšããŠè¡ãããŸãã
ããšãã°ãèŠçŽ ãåçŽæ¹åã§ã¯ãªãæ°Žå¹³æ¹åã«äžŠã¹ãŠã¿ãŸãããã
import QtQuick 2.0 Rectangle { width: 360 height: 360 ListModel { id: dataModel ListElement { color: "orange" text: "first" } ListElement { color: "lightgreen" text: "second" } ListElement { color: "orchid" text: "third" } ListElement { color: "tomato" text: "fourth" } } Flickable { anchors.fill: parent contentWidth: row.width Row { id: row height: parent.height Repeater { model: dataModel delegate: Item { height: parent.height width: 100 Rectangle { anchors.margins: 5 anchors.fill: parent color: model.color border { color: "black" width: 1 } Text { anchors.centerIn: parent renderType: Text.NativeRendering text: model.text } } } } } } }
RowèŠçŽ ã®é«ããåºå®ã«èšå®ãããšãåã®åèšå¹ ã«å¿ããŠå¹ ãèªåçã«å€æŽãããŸãã Flickableã§ã¯contentWidthãèšå®ããŸã-ããã¯ããæ³åã®ãšãããã³ã³ãã³ãã®å¹ ã§ãã Flickableèªäœã®å¹ ããã倧ããå Žåãã¹ã¯ããŒã«ã§ããããã«ãªããŸãã ãã®äŸã§ã¯ãæåŸã®èŠçŽ ãåãŸããªããããã¹ã¯ããŒã«ãæ©èœããããšã確èªã§ããŸãã

ã芧ã®ãšãããQtQuickã©ã€ãã©ãªã䜿çšãããšãæ¢æã®ãã¥ãŒã䜿çšããã«ãç°¡åãªã³ã³ããŒãã³ãããç¬èªã®ãã¥ãŒãäœæã§ããŸãããããããŸãæ©èœããŸãã
çµè«
æšæºã³ã³ããŒãã³ãã䜿çšãããšãããŒãã«ããä»»æã®ãã¹ã«æ²¿ã£ãèŠçŽ ãŸã§ãããŸããŸãªã¿ã€ãã®è¡šçŸãå®è£ ã§ããŸãã æ¢è£œã®ãã¥ãŒã«å ããŠãåºæ¬çãªã³ã³ããŒãã³ãããå®å šã«ç¬èªã®ãã¥ãŒãäœæã§ããŸãã
PathViewã¯ãçŸããå€èŠ³ãšã¢ãã¡ãŒã·ã§ã³ã«çŠç¹ãåœãŠããã£ã¹ãã¬ã€ãäœæããããã«èšèšãããŠãããèŠçŽ ã®è»è·¡ãèšå®ãããã¹ã®ããŸããŸãªéšåã®èŠçŽ ã®äœçœ®ãšå¯åºŠã«å¿ããŠèŠçŽ ã®ãã©ã¡ãŒã¿ãŒãå€æŽã§ããŸãã