Qt UIéçºã®ããã®QMLã å
¥éããå®ç¿ãŸã§è©³ãããæãããŸãã
Qtãã¬ãŒã ã¯ãŒã¯ã®UIå®è£
ãQMLã§ãã匷åã«ïŒ ããã°ã©ãã³ã°èšèª QML? Qtãã¬ãŒã ã¯ãŒã¯ã§ã¢ãã³ã§é«åºŠãªUI ã ç°¡åã«éçºã§ããããã°ã©ãã³ã°èšèªã§ãã
QML(Qt Modeling Language) ã¯ãQtãã¬ãŒã ã¯ãŒã¯ã§æäŸãããããã°ã©ãã³ã°èšèªã§ããQMLã¯ãQtãã¬ãŒã ã¯ãŒã¯ã§UIéçºã®ããã«äœ¿çšã§ããããã°ã©ãã³ã°èšèªã§ãããçŸä»£çã§é«åºŠãªUIã容æã«å®è£
ããããšãç®çãšããŠäœ¿çšã§ããŸãã
Qtãã¬ãŒã ã¯ãŒã¯ãå©çšããŠGUIããã°ã©ã ãéçºããéãUIéšåã®ãã¶ã€ã³ããžãã¯ãšæ©èœéšåã®æ©èœããžãã¯ãåããŠèããããšãã§ããŸãããã®äžã§ãQMLã¯ããã¶ã€ã³ããžãã¯ã«è©²åœããUIãéçº ããéã«ãC++ã®ä»£æ¿ãšããŠéžæã§ããèšèªã§ããç¹ã«QMLã§UIãéçºãããšããã¶ã€ã³ããžãã¯ãšæ©èœããžãã¯ãå®å
šã«åé¢ã§ããããããœãŒã¹ã³ãŒãã®åå©çšæ§ãé«ããããšãã§ããŸãã
QMLã䜿çšããŠãã¶ã€ã³ããžãã¯ãéçºãããšãC++ã䜿çšããŠéçºãããããã¯ããã«ç°¡åãã€è¿
éã«UIãå®è£
ã§ããŸãããŸããFlickableãGestureãAnimationã3Dãªã©ãçŸä»£çãªé«åºŠãªGUIæè¡ãç°¡åã«é©çšã§ããŸãã
ç°¡åãªææ³ãç°¡æœãªå¯èªæ§ QMLã®ã¡ãªãããäœéšããŠã¿ãŠãã ãããããã°ã©ãã³ã°èšèªãåããŠåŠã¶éã«ããäœæãããHello Worldãã®åºåäŸãèŠãŠã¿ãŸããããQMLãããã«ç°¡æœãªèšèªã§ããããããåãããŸãã
import QtQuick
Window {
width: 300
height: 200
visible: true
title: qsTr("QMLãµã³ãã«ãœãŒã¹ã³ãŒã")
Text {
x: 80
y: 70
text: "Hello World"
font.pixelSize: 25
}
}QMLãµã³ãã«ãœãŒã¹ã³ãŒã
QMLãµã³ãã«ãœãŒã¹ã³ãŒãå®è¡ç»é¢
QMLã¯ç°¡åã§ã·ã³ãã«ã§ãã éçºè
ã§ãªããŠãç°¡åã«çè§£ã§ããŸãããã®ããããã¶ã€ããŒãšéçºè
ã¯QMLã³ãŒããéããŠäºãã«å¯Ÿè©±ãå¯èœã§ããããäºãã®ã¢ã€ãã¢ãå
±æããããšãã§ããŸãã
ãããã£ãŠãQMLãå©çšããã°ããã¶ã€ããŒãšéçºè
ãåãéçºããŒã«ãå
±æããŠååããããšã§ã以åãããéçºæéãççž® ã§ããããã«ãªããŸãã
QMLããã°ã©ãã³ã°å
¥é ãã®ãããªæ¹ã«ããããããŸã ðââïž 1ïžâ£
Qtã§QMLãå©çšããŠã¢ãã³ã§é«åºŠãªUI/UX ãç°¡åã«å®è£
ãããæ¹ïŒéçºè
ããã¶ã€ããŒïŒ
2ïžâ£
ãã¶ã€ã³ããžãã¯ãšæ©èœããžãã¯ãåé¢ ããããšã§ããœãŒã¹ã³ãŒãã®ä¿å®æ§ãåå©çšæ§ãé«ãããæ¹
â
åæç¥è ãšããŠC++èšèªããã³Qtãã¬ãŒã ã¯ãŒã¯ã®åºç€ç¥èãçè§£ããŠããæ¹ã®ã¿ããã®è¬åº§ãåŠç¿ããã ããŸãã, you must have a basic understanding of the C++ language and the Qt framework to take this course.
è¬çŸ©ã®ç®æš ð¡ QMLãçšããŠãã¢ãã³ã§é«åºŠãªUX/UIãéçºããæ¹æ³ãåŠã¶ããšãã§ããŸãã QMLã䜿çšããŠããã¶ã€ã³ããžãã¯ãšæ©èœããžãã¯ãå®å
šã«åé¢ããæ¹æ³ã«ã€ããŠåŠã¶ããšãã§ããŸãã ã»ã¯ã·ã§ã³ããšã«çè«ãåŠã³ã倿§ãªå®è·µçãªäŸé¡ãäžå¿ã«çŽæ¥ã³ãŒããæžããŠã¿ãããšãã§ãããããå®åã§å¿
èŠãªQMLéçºã¹ãã«ãèªç¶ã«èº«ã«ã€ããããšãã§ããŸãã ãã®è¬åº§ãªãã§ã¯ã®ç¹åŸŽ ã 確èªããŠã¿ãŠãã ãã ð ðçè«ãšå®è·µãäžåºŠã«
QMLã®ææ³ã ãã§ãªããå®è·µåãŸã§èº«ã«ã€ããããããã«ãªãã¥ã©ã ãæ§æããŸãããåã»ã¯ã·ã§ã³ã®çè«åŠç¿ã®åŸã«ã¯ãå®è·µçãªäŸé¡ãè¬çŸ©ã«åãããŠèªãå®è£
ããªããåŠã¹ãææ¥ãçšæããŠãããå®åèœåãåäžãããããšãã§ããŸãã
ãªã³ã©ã€ã³ã®å£ãè¶ããŠ
è¬åž«ã®å§¿ãè¬çŸ©ç»é¢ã«åããŸãããèšå Žæããµããã©ã€ãã³ãŒãã£ã³ã°ãšãšãã«è¡ãããææ¥ãéããŠããŸãã§ãªãã©ã€ã³ææ¥ãåããŠãããããªæèŠã§ããã€ã§ãã©ãã§ãåŠç¿ããŠã¿ãŠãã ããã
è¬çŸ©æ§æ ðã»ã¯ã·ã§ã³1. What is QML QMLã¯Qt Frameworkã§æäŸãããã€ã³ã¿ãŒããªã¿èšèªã§ããä»åã®ã»ã¯ã·ã§ã³ã§ã¯ãQMLã«ã©ã®ãããªç¹åŸŽãšé·æãããã®ããèŠãŠãããŸãã
ã»ã¯ã·ã§ã³2. QMLã®æ§æãšæ§é QMLã®æ§é ãšææ³ãåŠã³ãŸãããããŠãå®ç¿äŸé¡ãéããŠQMLã䜿çšããæ¹æ³ã«ã€ããŠåŠã¶ã»ã¯ã·ã§ã³ã§ã
ã»ã¯ã·ã§ã³3. Type Typeãšã¯Qtã®QWidgetãšåããããªæŠå¿µã§ããä»åã®ã»ã¯ã·ã§ã³ã§ã¯ãTypeãšã¯äœããåŠã³ãQMLã§æäŸãããTypeã®äžãããã䜿ãããTypeãäžå¿ã«åŠã³ãŸãããããŠãå®ç¿äŸé¡ãšããŠAccessibleã¿ã€ããå©çšããŠãã¿ã³Typeãå®è£
ããŠã¿ãæéã§ãã
ã»ã¯ã·ã§ã³4. Events ã¿ãããããŠã¹ãããŒããŒããªã©ã®ããã«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹äžã§çºçããã€ãã³ãåŠçãã©ã®ããã«å®è£
ãã¹ãããåŠã¶ã»ã¯ã·ã§ã³ã§ãããããŠãQMLã§Signalãå®è£
ããæ¹æ³ã«ã€ããŠåŠã³ãŸããå®ç¿äŸé¡ã§ã¯ãSignalãšMethodïŒé¢æ°ïŒãæ¥ç¶ããäŸé¡ãéããŠãSignalãæ±ãæ¹æ³ã詳ããåŠã³ãŸãã
ã»ã¯ã·ã§ã³ 5. Loaderã¿ã€ããå©çšãããã€ãããã¯UIã®å®è£
UIã§ãŠãŒã¶ãŒãç¹å®ã®é åãåçã«å€åãããæ¹æ³ãåŠã³ãŸããäŸãã°ãAãšããGUIç»é¢ããç¹å®ã®æ¡ä»¶ãæºããå Žåã«Bç»é¢ã«åãæ¿ããæ¹æ³ãåŠã³ãŸãããããã£ãŠããã®ã»ã¯ã·ã§ã³ãéããŠåçã«ç»é¢ãå®è£
ããæ¹æ³ã«ã€ããŠåŠã³ãŸããæåŸã®å®ç¿äŸé¡ã§ã¯ãLoaderã¿ã€ããå©çšããŠåçã«ç»é¢ãåãæ¿ããæ¹æ³ãäŸé¡ãšããŠæ±ãæéã§ãã
ã»ã¯ã·ã§ã³ 6. Canvas ãã€ã³ããœããã®ããã«ç»é¢äžã«ç»åãç·ãå³åœ¢ãããã¹ãã衚瀺ããããã®æ¹æ³ã«ã€ããŠåŠã³ãŸããäŸãšããŠãè²ãéžæããŠãã€ã³ããœããã«çµµãæãããšãã§ããäŸé¡ã«ã€ããŠæ±ã£ãŠãããŸãã
ã»ã¯ã·ã§ã³ 7. Graphic Effects BlurãBlendãColorãªã©ã®ãšãã§ã¯ããç»åäžã§äœ¿çšããæ¹æ³ã«ã€ããŠåŠã³ãŸãã
ã»ã¯ã·ã§ã³ 8. Module Programming ãã¿ã³ãã³ã³ãããã¯ã¹ã®ããã«GUIäžã§é »ç¹ã«äœ¿çšãããã¢ãžã¥ãŒã«ãã¢ãžã¥ãŒã«åããã®ãšåæ§ã«ããŠãŒã¶ãŒãå®çŸ©ããTypeãã¢ãžã¥ãŒã«åããæ¹æ³ã«ã€ããŠåŠã³ãŸãããããŠãå®éã®æŒç¿äŸãéããŠQMLãã¢ãžã¥ãŒã«åããŠå®è£
ããæ¹æ³ã«ã€ããŠåŠã³ãŸãã
ã»ã¯ã·ã§ã³ 9. QMLã§ã®JavaScriptã®äœ¿çš QMLã§ã®JavaScript颿°ã®äœ¿ç𿹿³ã«ã€ããŠåŠã³ãŸãããããŠãJavaScriptãã¡ã€ã«ãQMLã«ã€ã³ããŒãããæ¹æ³ã«ã€ããŠåŠã³ãŸããæŒç¿äŸã§ã¯ãèšç®æ©ã®å®è£
ãéããŠJavaScriptã®äœ¿ç𿹿³ã«ã€ããŠè©³ããåŠã¶ããšãã§ããŸãã
ã»ã¯ã·ã§ã³ 10. Dialog QMLã§ãã€ã¢ãã°ã䜿çšããæ¹æ³ã«ã€ããŠåŠã³ãŸãããããŠãå®ç¿äŸé¡ãšããŠColorãéžæãããã€ã¢ãã°ãçŽæ¥å®è£
ããŠã¿ãããšã§ããã€ã¢ãã°ã®äœ¿ç𿹿³ã«ã€ããŠåŠã¶ããšãã§ããŸãã
ã»ã¯ã·ã§ã³ 11. Layout QMLã§ã¯Anchors以å€ã«ããRowLayoutãColumnLayoutãGridLayoutãLayoutãªã©ã®ã¬ã€ã¢ãŠãã䜿çšã§ããŸããä»åã¯ãããŸããŸãªã¬ã€ã¢ãŠãã®äœ¿ç𿹿³ã«ã€ããŠåŠã³ãŸãã
ã»ã¯ã·ã§ã³ 12. Type Positioning Type Positioningãšã¯ãç»é¢äžã«Typeã衚瀺ããããã®æ¹æ³ãåŠã³ãŸããäŸãã°ãã¿ã€ããé
眮ããéã«ã暪ã瞊ããŸãã¯æ Œåç¶ã®ãããªåœ¢ã§Typeãé
眮ããæ¹æ³ã«ã€ããŠåŠã³ãŸãã
ã»ã¯ã·ã§ã³ 13. Qt Quick Controls Qt Quick Controlsã¯ãButtonãDialãCheckBoxãBusyIndicatorãªã©ãç»é¢ãæ§æããããã«å¿
èŠãªGUIã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãQt Quick Controlsã䜿çšããæ¹æ³ã«ã€ããŠåŠã³ãŸãã
Q&A ð¬
Q. çè«ãææ³ä»¥å€ã«ãå®éã«äœ¿ãããŠãã倿§ãªäŸé¡ã«ãè§Šããããšãã§ããŸããïŒ
ã¯ããå¯èœã§ããåã»ã¯ã·ã§ã³ããšã®çè«åŠç¿ã®åŸãäŸé¡ãéããŠè¬åž«ãšäžç·ã«ã³ãŒãã£ã³ã°ãè¡ãéçšãçšæãããŠãããå®åã§QMLãçšããå®è·µçãªããã°ã©ãã³ã°ãè¡ãéã®ããŠããŠã䜵ããŠåŠã¶ããšãã§ããŸãã
Q. åŠç¿ããè¬çŸ©å
容ã®åèã«ãªãè³æãææã¯ãããŸããïŒ
Qtéçºè
ã³ãã¥ããã£(qt-dev.com )ã§éå¶è
ãšããŠæŽ»åããŠããŸããQtããã³QMLã«é¢ããæ
å ±ããã®ãµã€ãã§åŸãããšãã§ããŸãã
Q. åè¬ããåã«åŠãã§ããã¹ãããšã¯ãããŸããïŒ
C++ããã³Qtã®åºç€ç¥èãå¿
èŠãªè¬åº§ã§ããQtã®çµéšããªãæ¹ã¯ãååã®ãQtããã°ã©ãã³ã°ãè¬åº§ããããããåè¬ããŠãããæ¬è¬åº§ãåè¬ãããããšããå§ãããŸãã
Q. ææ¥å
容ã¯ã©ã®ã¬ãã«ãŸã§æ±ããŸããïŒ
QMLã®åºç€ããæ§ã
ãªæŽ»çšåéã«ãããé«åºŠãªå
容ãŸã§æ±ããŸãã
詳现ã¯ãã¬ãã¥ãŒã§å
¬éãããŠããã»ã¯ã·ã§ã³1 [QMLåèè³æããã³QMLåŠç¿ã®ããã®æšå¥šQtããŒãžã§ã³ã®èª¬æ] ã®ææ¥ãã確èªãã ããã