CppCon 2017ããã©ãŒãã³ã¹ã¬ãã¥ãŒãµã€ã¯ã«ã®æŠèŠïŒ
- BjörnStraustrupïŒã¢ãã³C ++ã®åŠç¿ãšæå°
- Lars KnollïŒC ++ Qtãã¬ãŒã ã¯ãŒã¯ïŒæŽå²ãçŸåšãæªæ¥
- ïŒé²è¡äžïŒ
Qt Companyã®CTOã§ããLars Knollã®æŠèŠã ãã®ããã©ãŒãã³ã¹ããããŸãæåŸ ããªãã§ãã ããã ã€ã¿ãªãã¯äœã®è§æ¬åŒ§å ã¯ã¡ã¢ã§ãã
Qtã«ã€ããŠå°ã話ãæ©äŒãããããšãã ããã¯C ++ãã¬ãŒã ã¯ãŒã¯ã§ãã ãã®åçãšå²åŠã¯ãæšæºã©ã€ãã©ãªã®ãªãã¿ã®ãããã®ãšã¯å°ãç°ãªããŸãã [ èŽè¡ãžã®è³ªå ]æ å ±ãåŸãããã ãã«ãQtãç¥ã£ãŠããŠä»¥åã«Qtã䜿çšããããšããã人ã¯äœäººã§ãã ããïŒ ããããšãããããïŒ ããã¯çŽ æŽãããã§ãïŒ ãããããããªãããããããã§ã«ç¥ã£ãŠããããšã«ã€ããŠè©±ããŸãããã
Qtãšã¯äœã§ããïŒ
ãããããããæãå æ¬çãªC ++ãã¬ãŒã ã¯ãŒã¯ã§ãã ããããããã¯ãã¬ãŒã ã¯ãŒã¯ã§ããã ãã§ãªããçµã¿èŸŒã¿ããã€ã¹ã®éçºãæ¯æŽããããŸããŸãªããŒã«ã§ãããC ++ãšã¯é¢ä¿ãªããçµ±åãããQt Quick UIãã¯ãããžãŒã§ãã
2ã€ã®ã©ã€ã»ã³ã¹ïŒåçšããã³LGPLv3 / GPLv3ã ããã¯ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãã
2ã€ã®è£œåïŒ
- Qt for Application DevelopmentïŒãã¹ã¯ãããããã³ã¢ãã€ã«ãã©ãããã©ãŒã ïŒAndroidãLinuxãWindowsãMacãiOSïŒ
- Qt for Device CreationïŒçµã¿èŸŒã¿ãã©ãããã©ãŒã ïŒAndroidãLinuxãWindowsãQNXãVxWorksãGreen Hills SoftwareïŒIOTãInternet of ThingsïŒïŒ
ã¢ããªã±ãŒã·ã§ã³éçºã®ããã®Qt
ã³ã¢ã«ã¯çµ±åã©ã€ãã©ãªããããŸãã æãéèŠãªã®ã¯ã³ã¢ã§ããããã«ã¯ãã¡ã€ã³ã¯ã©ã¹ãI / Oããã¡ã€ã«åŠçãªã©ãå«ãŸããŸãã GUIã©ã€ãã©ãªã¯ãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ã®åºç€ã§ãã ãããŠä»ã®å€ãã
ããã€ã¹äœæã®ããã®Qt
Qtã¯ãªãšãŒã¿ãŒ
ãã¹ã¯ããããã¢ãã€ã«ãçµã¿èŸŒã¿ã·ã¹ãã åãã®ã¯ãã¹ãã©ãããã©ãŒã éçºç°å¢ã å€ãã®äººãããã䜿çšããŠãQtãªãã§çŽç²ãªC ++ã§ããã°ã©ãã³ã°ããŸãã ããŸããŸãªããŒã«ïŒãããã¡ã€ã©ãŒããããã¬ãŒ...ïŒããªãŒãã³ã³ããªãŒããVCSã®çµ±åããµããŒãããŠããŸã...
Qt Creatorããã³CLangéçã¢ãã©ã€ã¶ãŒã«ããæ©æãšã©ãŒæ€åº
ç©èª
26幎åã«æ©éãããŸãã Haarvard NordãšEirik Chambe-Engã®åŠçã¯ãæ°ãããããžã§ã¯ãã«ã€ããŠèããŸããã åœæã圌ãã¯UnixãMacintoshãããã³Windowsã§åäœããã·ã¹ãã çšã®GUIãéçºããŠããŸããã 倧å€ã§ããã 1990幎ã®å€ã圌ãã¯ãªããžã§ã¯ãæåã®ãããã³ã°ã·ã¹ãã ãå¿ èŠã§ãããšå€æããŸããã
1993幎ã«ãæåã®ã°ã©ãã£ãã¯ã³ã¢ãéçºãããŸããã
ãã®ããŒãžã§ã³ã¯ã¯ãšãŒãµãŒãšåŒã°ããŠããŸããã ãã®åŸãåå空éã¯ãããŸããã§ããã MotifïŒã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã®ã©ã€ãã©ãªãšãX Window Systemã®ã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ãéçºããããã®äžé£ã®ä»æ§ïŒã«ã¯ãç¬èªã®ãã¬ãã£ãã¯ã¹ããããŸããã ãã®ãããåå空éãšããŠæ©èœããæ¥é èŸãQããè¿œå ãããŸããã çŸåšããã®ããŒãžã§ã³ããå€ããä¿åãããŠããŸãã æ®ãã®QObject-ã·ã°ãã«/ã¹ãããã¡ã«ããºã ãå®è£ ããäžå¿éšåã ãŸããQEventãQFontãQPainterãQColorã
1994幎ã圌ãã¯åŠ»ãã¡ã«æ°å¹Žé圌ãã財æ¿çã«æ¯æŽãããã説åŸããTrolltech瀟ãèšç«ããŸããã
Trolltech Webãµã€ãã®åæããŒãžã§ã³
ãããžã§ã¯ãã¯ãŸã ããªãç²éã§ããã ããã«ãåœæã®ã€ã³ã¿ãŒããããä»ãããœãããŠã§ã¢ã®è²©å£²ã¯äžè¬çã§ã¯ãªããç©çã¡ãã£ã¢ã奜ãã§ããŸããã ãããã£ãŠããéã¯ã»ãšãã©ãããŸããã§ããã
1996ïŒQt 1.0
ãã³ãã¬ãŒããªãã§å®å šã«æ©èœããŸããã ãã®ããããã€ã³ã¿ãŒãæŽæ°ãªã©ã®ç¹æ®ãªãªã¹ããããã€ããããŸãããWindows95 / NTããã³UNIX / X11ããµããŒããããŠããŸããã UNIXããŒãžã§ã³ã¯ãªãŒãã³ãœãŒã¹ã§ãããå°ããªäŒç€Ÿãäœããã®åœ¢ã§è£œåãé åžããå¿ èŠããã£ãããã§ãã
æ°ãããããžã§ã¯ãïŒKool Desktop EnvironmentïŒKDEïŒ
1997幎ãMatthias EttrichïŒKDEãããžã§ã¯ããžã®è²¢ç®ã§ç¥ãããŠããïŒã¯ãQtã䜿çšããŠKDEãäœæããããšã決å®ããŸããã ããããããããQtããé¢éžãããçç±ã§ããã
1999ïŒQt 2.0
GPLã®äžã§ãªãªãŒã¹ãããŸããã UnicodeãµããŒããç»å ŽããŸããã ãããžã§ã¯ãã«ã¯ãã³ãã£ãŒãã£ãã¿ã«ãæäŸãããŸããã 幎éã®åŸæ¥å¡æ°ã¯5人ãã50人ã«å¢å ããŸããã
åºæ¬çãªãŠã£ãžã§ãããšããæè»ãªãã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããã¬ã€ã€ãŒãéçºãããŸããã ãããã人ã ã¯ãã®ããã®ã³ãŒããæžããããããŸããã§ããã ãã®åŸãQt Designerãç»å ŽããŸããã
æåã®ããŒãžã§ã³
ãã®æç¹ã§ãç§ã¯Trolltechã§åãå§ããŸãã [ ãããŠãèè ã¯ä»£åè©ãç§ãã¡ããããã«äœ¿ãå§ããŸãã ]
2001ïŒQt 3
æååã®æ瀺çãªå ±æãæé»çãªå ±æã«çœ®ãæããŸããã 人ã ã¯ããããã®åŒŠã®åé¡ãæ±ããŠããŸããã 次ã«ãæé»çãªå ±æãæ®ãããšã«ããŸããããè¡ãå€æŽããããšãã«æ°ããå éšã€ã³ã¹ã¿ã³ã¹ãäœæããŸãïŒã³ããŒãªã³ã©ã€ãïŒ[ 以äžã§è©³ãã説æããŸã ]ã
ããå€ãã®ãã³ãã¬ãŒãC ++ 98ã䜿çšãå§ããŸããã qobject_cast <>ïŒQObjectã®dynamic_castã®ã¢ããã°ã§ãããRTTIã䜿çšããŠããŸããïŒããããŸãã Macçšã®ãªãŒãã³ãœãŒã¹ã
2005ïŒQt 4
ãã³ãã¬ãŒããšãã«ããŒã¯ã©ã¹ã培åºçã«ã¬ãã¥ãŒããŸããã ã³ã³ãããŒãžã®å€ãžã®ãã€ã³ã¿ãŒã®ä¿åãããå€èªäœã®ä¿åã«ç§»è¡ããŸããã æé»çãªå ±æã³ã³ããã¯ãã¢ãããã¯ãªåç §ã«ãŠã³ãã䜿çšãå§ããŸããã Windowsçšã®ãªãŒãã³ãœãŒã¹ã Windowsã®å Žåãåå ¥ãšè³Œå ¥è ãçãæ®ãããã«ãããæåŸã§ããã
ããã¢ãTrolltechãè²·å
Nokiaã¯ããã©ãããã©ãŒã ïŒS40ãSymbianïŒMaemo / MeeGoïŒã®å ±éAPIã«èå³ããããŸããã Qtãžã®å·šé¡ã®æè³ãåããŸããã é·ãéãã¯ãã¹ãã©ãããã©ãŒã IDEã®éçºãæãã§ããŸããããè³éã¯ãããŸããã§ããã ããã¥ã¢ã«ã§ã¯Eclipseãæšå¥šããŠããŸãããC ++ã«ã¯ããŸãé©ããŠããŸããã ããã¢ã«ãã£ãŠãç§ãã¡ã®æ¬²æãå¯èœã«ãªããQt CreatorãäœæãããŸããã ãŸããQt Quickã ãŸããWebKitãšã³ãžã³ã®çµ±åã«åãçµã¿å§ããŸããã Nokiaã¯ã©ã€ã»ã³ã¹ãGPLããLGPLã«å€æŽãããã¬ãŒã ã¯ãŒã¯ãããã«ç¡æã«ããŸããã
2012幎ã«ãããã¢ãšå¥ããŸããã
2011/2012 Qt 5
Digiaã¯Qtãè²·åããŸããã
æ°ãããã©ãããã©ãŒã ãžã®ç§»æ€ã¯å°é£ã ã£ããããæœè±¡åã¬ã€ã€ãŒãè¿œå ããŸããã ç§ãã¡ã¯ã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ãŒã¹ã§è¯ãä»äºãããŸãã;ããã¯éçã§ãªããªã£ãã äŸãã°ãããã¯ç§»åäžã«Dock WidgetãŠã£ã³ããŠã«è¡šç€ºãããŸãã
2016ïŒQt CompanyãDigiaããåé¢
ä»æ¥ã®Qt Company
250人ã®åŸæ¥å¡ã幎éåå ¥3,200äžãŠãŒãã çŽ100äžäººã®ã¢ã¯ãã£ããŠãŒã¶ãŒã
Qtä»
ç§ãã¡ã®ç®æšïŒ
- å€ãã³ãŒãã®ãµããŒã
- çŽèŠ³
- èªå·±ææžå
- ç°¡åã«ç¿åŸããŠäœ¿çšã§ããAPI
- æ§èœ
ã·ã³ãã«ã
C ++ã®åŠç¿æ²ç·ã¯éåžžã«æ¥åŸé ã§ãããããåå¿è ã«ã¯å°é£ã§ãã ãŸãã«ããã®ãã¹ãŠã®è€éããå¿ èŠã«ãªããŸãã ãŸããQtã¯C ++ã®é人ã ãã§äœ¿çšãããããã§ã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³éçºè ããã³ãã¬ãŒãã®ã¡ã¿ããã°ã©ãã³ã°ããããããšã¯ãã£ãã«ãããŸããã
å®è£
[ QObjectã®åºæ¬ãSignals / Slotsãmocã«ã€ããŠè¡šé¢çã«èª¬æããŠããŸãããããã¯ã©ã®ããã¥ã¢ã«ã«ãæžãããŠããŸã ã
æé»çã«å ±æ
è©³çŽ°ïŒ æé»çã«å ±æ
å€ãã®ã¯ã©ã¹ã¯æ¬¡ã®ããã«å®è£ ãããŸãã
class QFont { void setPointerSize(int pt) { if (d->refCount != 1) detach(); d->pointSize = pt; } private: detach(); QFontPrivate *d; }; class QFontPrivate { QBasicAtomicInt refCount; int pointSize = -1; int weight = QFont::Normal; };
ããã«ãããã¯ã©ã¹ã¡ã³ããŒãè¿œå ããã³åé€ããéã«ãããèªç±ã«ãªããŸããã ãªããžã§ã¯ããå€æŽãããšãå éšããŒã¿ã®ã³ããŒãäœæãããŸãã ãã®ã¢ãããŒãã®å©ç¹ïŒ
- ãªããžã§ã¯ãã¯ã»ãŒããªããã£ãåã®ããã«åäœããŸã
- ãªããžã§ã¯ãã®ç°¡åã§çŽ æ©ãã³ããŒ
- ãªããžã§ã¯ãã¯å€ã§æž¡ãããšãã§ããŸã
- ã¹ã¬ããã»ãŒã
çæïŒ
- ã¢ãããã¯ã«ãŠã³ã¿ãŒã«ããããããªããã©ãŒãã³ã¹ã®äœäž
- å埩ã®ã»ãã³ãã£ã¯ã¹ã®ããããªå€æŽ
- Range-forã«ãŒãã«ã¯åé¡ãããå¯èœæ§ããããŸãã
for(auto c : qvector) // (detached) for(auto c : qAsConst(qvector)) //
[ æåã®è¡ã§ã¯ãå®éã«detachãåŒã³åºãããŸãããå éšã³ããŒã®äœæã¯ãã«ãŠã³ã¿ãŒã1ãã倧ããå Žåã«ã®ã¿çºçããŸããäŸïŒ ]
QVector<int> v1 = { 1, 2, 3 }; QVector<int> v2 = v1; // , v1 v2 for (auto c : v1) // , v1.begin()
æšæºã©ã€ãã©ãªã«ãªããã®ãåããŸãïŒ
- UnicodeãµããŒããåããQStringãC++ã¯éåžžãµããŒãããŠããŸããã
- QLocale
- QDate / QTime / QDateTime / QTimeZone
- QAtomicãšã¹ã¬ããã C ++ 11ããåã«å®è£
- ãã¡ã€ã«ã·ã¹ãã ãI / Oããããã¯ãŒã¯ã®æäœ
- ã°ã©ãã£ãã¯ã¹
Qtã¯ã€ãã¯
[ QMLã®éåžžã«åºæ¬çãªããšã§ãæ°ãããã®ã¯ãããŸããã éãã ]
ä»åŸã®ãªãªãŒã¹
- Qt 5.9-çŸåšã®ãªãªãŒã¹ïŒé·æãµããŒã-3幎ïŒ
- Qt 5.9.2-è¿æ¥å ¬é
- Qt 5.10-ããŒã¿çãè¿æ¥ãªãªãŒã¹ã11æãªãªãŒã¹
- Qt 5.11-2018幎5æ
- Qt 5.12-2018幎11æïŒãµããŒãããã次ã®é·æåè£ã®åè£ïŒ
ã°ã©ãã£ãã¯ã¹
Qt SceneïŒOpenGLãVulkanãMetalãDirect3DãSoftware RasterizationïŒã«ããŸããŸãªã°ã©ãã£ã«ã«APIãå«ãã
äºå®ãããä»äº
- ããã©ãŒãã³ã¹ã®æ¹å
- é³å£°èªèïŒããžã¿ã«ã¢ã·ã¹ã¿ã³ãïŒïŒ
- AR / VR
- IDEããŒã«ïŒãªãã¡ã¯ã¿ãªã³ã°ãã¯ãŒã¯ãããŒïŒ
C ++ 14ããã³17
VS2013ãèš±å¯ããç¯å²ã§C ++ 11ã䜿çšããŸãã 䜿çšãããïŒ
- constexprã®å Žå
- if / switchã®åæåå
- æ§é åãã€ã³ãã£ã³ã°
- ãªãŒããŒã¢ã©ã€ã¡ã³ããããããŒã¿
ãã§ã«__has_include
ã [[deprecated]]
[[fallthrough]]
ã [[nodiscard]]
ã [[nodiscard]]
ãŸãã QStringViewãè¿œå ããŸããã
C ++ 20
Qtã«ãšã£ãŠéåžžã«èå³æ·±ããã®ã«ãªãå¯èœæ§ããããŸãïŒæŠå¿µãã¢ãžã¥ãŒã«ããªãã¬ã¯ã·ã§ã³ïŒå°æ¥ãmocãåé€ããããšãã§ãããããããŸããïŒã
質çå¿ç
Qtã»ãã¥ãªãã£ã¯ã©ãã§ããïŒ
ãã¡ããããã«åãçµãã§ãããããããã¢ããããŒãã®ãªãªãŒã¹ã«å€ãã®æéãè²»ãããŠããŸãã ã»ãã¥ãªãã£ã¡ãŒãªã³ã°ãªã¹ãã¯éåžžã«å°ããã§ãã
ã©ã®ããã«çºé³ããŸããïŒkyutiãŸãã¯kyuyt [ ã©ã¡ãã®å Žåãéåžžã«æããããtââã ]
ãã質åã§ãïŒ ç§ãã¡ã®äŒç€Ÿãšäžç·ã«åã人ã ã§ã¯ããkyutãã䜿çšãããŸãããç±³åœã§ã¯äž»ã«ãkyutãã§ãã [ å æ°ã§ããïŒ æ祚ãè¿œå ããŸãã ]
Qtããã°ã©ãã³ã°ã¯C ++ããã°ã©ãã³ã°ãšã¯ç°ãªããŸãã QVectorãªã©ãæ©èœã®éè€ã«ã€ããŠã©ãæããŸããïŒ ããŒãžãèšç»ããŠããŸããïŒ
çæ³çã«ã¯ãã¯ãããããåé¡ããããŸãã ãŸããå€ãã³ãŒãã®ãµããŒããåå ã§ãã 第äºã«ãQStringïŒå€§æåãšå°æåã®å€æãUnicodeãªã©ã®ã€ã³ã¿ãŒãã§ã€ã¹ã¡ãœããïŒãªã©ãããã€ãã®Qtã¯ã©ã¹ã®æ¹ãåªããŠããŸãã åæ§ã®ã³ã³ããã«ã€ããŠå€ãã®è³ªåãããŸãã æãé©åãªãã®ãéžæããããšããå§ãããŸãã
Qtã¯çã®ææãã€ã³ã¿ãŒã䜿çšããããã«ãªããŸããã ããããã¹ããŒããªãã®ã«çœ®ãæããæã§ããïŒ ã¹ããŒããã€ã³ã¿ãŒãæã€ãªããžã§ã¯ãã¯ã芪ãæã€ããQtã«æž¡ãããšãã§ããªããªããŸããã
ãšãŠãé£ããã§ãã ãããŠãå€ãã³ãŒãã¯ãã¹ãŠå£ããŸãã
ã³ãŒãããªãŒãã³ãœãŒã¹ã®å Žåãåå ¥ã¯ã©ãã«ãããŸããïŒ
販売ããåçšçãžã
移åã³ã³ã¹ãã©ã¯ã¿ãŒãQObjectãšæŽŸçã¯ã©ã¹ã«è¿œå ããŠã¿ãŸãããïŒ ã³ããŒã³ã³ã¹ãã©ã¯ã¿ãŒã§ã¯ãããã¯ç解ã§ããŸã[ ã³ããŒã³ã³ã¹ãã©ã¯ã¿ãŒããªãçç± ]ã
ãã¹ãŠãå£ããŸãã å€äœã®ã»ãã³ãã£ã¯ã¹ã®åºçŸãäºèŠããå ŽåãããããçŸåšã®ã¡ã«ããºã ã䜿çšããªãã§ãããã ä»ã§ã¯å€æŽããã®ã¯éçŸå®çã§ãã
æååã®ã³ããŒãªã³ã©ã€ãã¢ãã«ã®ããã©ãŒãã³ã¹ããåçŽãªã³ããŒãšæ¯èŒããŠè©äŸ¡ããŸãããïŒ
çãè¡ã®å Žåãã³ããŒã¯é«éã§ãã è¿æ¥äžã«åæ§ã®ã¡ã«ããºã ãå®è£ ããã¢ããããŒããè¿æ¥å ¬éãããŸãã
ä»ã®ã°ã©ãã£ãã¯ã¹APIã®ãµããŒãã¯ã©ãã§ããïŒ
Apple MetalãVulkanãDirect 3D 12ãªã©ã®3D APIã«ã€ããŠè©±ããŠããå Žåãããã¯è€éã§ãã