éå»2é±éãã¯ã©ã€ã¢ã³ãã®1人ã圌ã«å©ããŠãããšé Œãã ã®ã§ãBlackBerry 10 NDKãããäžåºŠèª¿ã¹ãŸããã Qtå ¥éã³ãŒã¹ãBlackBerryãã©ãããã©ãŒã ã«é©å¿ãããããšããå§ãããŸãããŸããä»å¹Žåãã«YouTubeã§å ¬éãããBB10ããã³Cascadesã®ãã¥ãŒããªã¢ã«ã·ãªãŒãºã®ãã³ãã«åŸãããšããå§ãããŸãã ããã§ãBlackBerry 10 NDKã®ç§ã®æ°é®®ãªå°è±¡ãå ±æããããšæããŸãã ãšããã§ãç§ã¯ãã§ã«ãã®æ¥ã«BB10 NDKã§ã® æåã® å®éšã«ã€ããŠæžããŸããã
ã泚æ ããã¯ãJens Weller ã«ããã¡ã¢ã®ç¡æ翻蚳ã§ãã 翻蚳ã¯ãäžçã®çŸåšã®ç¶æ ã®äžè¬çãªå³[BB10 + Qt]ãç·šéããããã«è¡ãããŸããã è¯ãèªæžãããŠãã ããã
ã¢ããªã±ãŒã·ã§ã³ãšC ++
å§ããåã«ãã¢ããªã±ãŒã·ã§ã³ãšC ++ã«ã€ããŠç°¡åã«çŽ¹ä»ããŸãã Javaã.NETãªã©ã®ä»ã®èšèªãã移è¡ãã人ã ã¯ãå€ãã®å ŽåãC ++ã§ã¢ããªã±ãŒã·ã§ã³ãäœæããå¿ èŠæ§ãç解ããŠããŸããã ç¹ã«ãOOPãšGarbage Collectorã«åŒ·å¶çã«çµã³ä»ããããèšèªãã移è¡ããããšã¯ãC ++ã§äœ¿çšããããã¹ãŠã®æŠå¿µãç解ããã®ã容æã§ã¯ãªãããšã§ãã ç§ã®æèŠã§ã¯ãå®éã«ã¯ãç¹ã«ãã®ãããªåŒ·åãªQtãã¬ãŒã ã¯ãŒã¯ãšçµã¿åãããŠãã¢ããªã±ãŒã·ã§ã³éçºã«C ++ã䜿çšããå€ãã®çç±ããããŸãã ãã®çç±ã®1ã€ã¯ããã©ãŒãã³ã¹ã§ããC++ã¯ããŒããŠã§ã¢ã«éåžžã«è¿ããããã¢ããªã±ãŒã·ã§ã³ã¯æå°éã®ããããªãŒãæ¶è²»ããŸãã å°æ¥çã«ããã€ã¹ã®ããã©ãŒãã³ã¹ãåäžããäžéããããšããäºå®ã¯èšããŸã§ããããŸããããããŒããµãã¿ãŒã¯ãç¡æã®é 絊ã¯çµäºããŸããã ïŒ ãŠã§ããã¹ã³ã³ãã㫠翻蚳ããããŸã - 翻蚳è ã®ã¡ã¢ ïŒãšããã¡ã¢ã§ãããèšåããŸããã Qtãã¬ãŒã ã¯ãŒã¯ã¯AndroidãšiOSã®äž¡æ¹ã§å©çšã§ããããã«ãªã£ããããC ++ãšQt / QMLã¯ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãäœæããããã®éåžžã«åŒ·åãªçµã¿åããã«ãªããŸããã
NDKãšã«ã¹ã±ãŒã
ãããã£ãŠãBlackBerry 10çšã®ã¢ããªã±ãŒã·ã§ã³ãéçºãããšãã¯ã BlackBerry NDKããå§ããå¿ èŠããããŸãã æ°ãããªãªãŒã¹ããã1.2ããŒãžã§ã³ããã¬ã€ããæéã¯ãããŸããã§ããããIDEã¯äžèŠããŠèããè¯ããªããããå®å®ããŸããã ãããã1.2ã¯ãŸã ããŽãŒã«ãã³ãã¹ããŒã¿ã¹ãåãåã£ãŠããŸããïŒAPIãä¿®æ£ãã æ¢ã«åãåã£ãŠããŸã- çŽTranslator ïŒããããã£ãŠã1.2ã®äœããå¿ èŠã§ãªãéãã1.1ã§æžãããšããå§ãããŸãã BlackBerry NDKã«ã¯Cascades Frameworkãä»å±ããŠãããBB10çšã®ã¢ããªã±ãŒã·ã§ã³ãéçºãããšãã«äœ¿çšããAPIã§ãã Cascadesã¯Qtã®äžã«æ§ç¯ãããQMLã䜿çšããŸãããBlackBerryã«ã¯UIã¹ã¬ããã§å®è¡ãããç¬èªã®QMLå®è£ ããããããQt5ã«ã¯QtQuick 2ããããŸãã ãã®ãããQtQuick1ãŸãã¯2ã§äœæãããQMLã¯ãã«ã¹ã±ãŒãã§ã¯æ©èœããŸããã ãŸããQt5ã¯Cascadesã§å®å šã«ãµããŒããããŠããŸãã-çŸåšã®ããŒãžã§ã³ã¯Qt 4.8ã«åºã¥ããŠããŸãã
2010幎以æ¥ãQtãšQMLã§ã®ã¢ãã€ã«éçºã«èå³ãããã以åã¯MeeGoã§å¿ããã£ãã®ã§ãããä»ã¯BlackBerryã§åããŠããŸãã BB10ã®QMLã¯ãããã«ç°ãªããã³ã³ãããããŒãžãã³ã³ãããŒã«ãªã©ã®ç¹å¥ãªèŠçŽ ã䜿çšããŸãããQtQuick1 / 2ã¯ItemãRectangleã®ãããªéåžžã«åºæ¬çãªèŠçŽ ãæäŸããŸãã QMLãšãã®APIã«ã€ããŠã¯ãBlackBerryã«ã¯ç¬èªã®å°ããªäžçããããŸãã ãããŸã§ã®éãQt5ã¢ããªã±ãŒã·ã§ã³ã¯BB10äžã§æ§ç¯ããã³å®è¡ã§ããŸãããCascadesãæäŸããçµ±åã®åºŠåãã¯äŒŽããŸããã
QMLããã³C ++
ããã¥ã¡ã³ããšè°è«ããå€æãããšãäž»ãªã¢ãããŒãã¯ãå¿ èŠãªå Žåã«ã®ã¿C ++ã®ã»ãšãã©ã®ã¿ã¹ã¯ãšããªããžã«QMLã䜿çšããããšã«ãªããŸãã ããšãã°ãC ++ã§ã¢ãã«ã
Q_PROPERTY
ãã
Q_PROPERTY
ã䜿çšããŠã¯ã©ã¹ã¡ãœããã宣èšããŠQMLã«ã¢ã¯ã»ã¹ããå Žåã ãã®åŸãã»ãšãã©ã®äœæ¥ã¯QMLåŽã§è¡ãããŸãã QMLã«ã¯ãconsole.assertãªã©ã®ãšã©ãŒã確èªããã³ãã§ãã¯ããæ¹æ³ã¯ã»ãšãã©ãããŸããããQMLã¯JavaScriptã«ç¿»èš³ãããŠããã匷ãåä»ãããªããããåã®äžèŽããã§ãã¯ã§ããŸããã å€æ°åã«ã¿ã€ããã¹ããããšãQMLããã®ãšã©ãŒã«æ°ä»ããªãå¯èœæ§ããããŸããããã®å€æ°ã¯æ°ãã宣èšãããŠãããšèŠãªãããŸãã ç°¡åãªäŸïŒ
Container { layout: DockLayout { } Label{ text:ListItemData.titel } }
ListView
ã³ã³ããã«è¡šç€ºããããã®ãã®åçŽãªèŠçŽ ã¯ã
ListItemData
ãä»ããŠè¡šç€ºçšã®ããŒã¿ã«ã¢ã¯ã»ã¹ããŸãã ããã§å°ããªãã¹ãããŸãããå®éããã®èŠçŽ ã¯
title
ãšåŒã°ãã
titel
ã¯ãã€ãèªã§ãã ããã«ããã€ã人ã¯ããã«ããã«æ°ä»ããªãã§ãããã ãããŠãQMLã¯ãã以äžæ°ã¥ããŸããã ããã«ä»»æã®åèªãæ¿å ¥ã§ããŸããQMLã¯ã³ã³ãã€ã«æã§ãå®è¡æã§ããã®ãããªãšã©ãŒããã§ãã¯ããŸããã äœã衚瀺ãããŸãããã³ã³ãœãŒã«ã§èŠåãèŠã€ããã®ã¯å¹žéãããããŸããã ãšããã§ãIDEãæ£ããæ§æãããšãããã€ã¹ã§ãããã°ããŠãããšãã§ããã¡ãã»ãŒãžã確å®ã«è¡šç€ºãããã¯ãã§ãã
ããã«å¯ŸåŠããã«ã¯ïŒ Cascadesã®èåŸã«ã¯Qtäžã«æ§ç¯ãããC ++ãã¬ãŒã ã¯ãŒã¯ããããããå°ãªããšãC ++ã§ã¯ããããæ€åºããŠãšã©ãŒãå ±åããæ©äŒããããŸãã æ®å¿µãªãããããã¯ã³ã³ãã€ã«æã«æ€åºã§ããŸããããç§ã¯ãã®æ¹åã§äœæ¥ããŠããŸãã ãããã£ãŠã
Q_ASSERT
ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å®è¡äžã«ãã§ãã¯ãè¡ããŸãã QMLã«å«ãŸããã«ã¹ã±ãŒãã®ãã¹ãŠã®èŠçŽ ã«ã¯ãå®è¡æã«åèŠçŽ ã«å¯ŸããŠåçã«ã€ã³ã¹ã¿ã³ã¹åãããC ++ã®ã¯ã©ã¹ããããŸãã Cascades APIã䜿çšãããšããããã®ã¯ã©ã¹ã®ãªããžã§ã¯ããæ€çŽ¢ããŠãããã€ãã®ããšãå¶åŸ¡ããããšãã§ããŸãã C ++ãã
ListView
é ç®ãæäŸãã
ListView
ã¯ã©ã¹ããããŸãïŒ
ListItemProvider
ã ãã®ã¯ã©ã¹ã«ã¯ç¬èªã®ã€ã³ã¿ãŒãã§ãŒã¹ããããŸãïŒ
virtual bb::cascades::VisualNode* createItem(bb::cascades::ListView* listview,const QString& type); virtual void updateItem(bb::cascades::ListView* listview,bb::cascades::VisualNode* node,const QString& type,const QVariantList& indexPath, const QVariant& data);
ãããã®ä»®æ³ã¡ãœããã®å®è£ ã«ãããListViewã«è¡šç€ºããã¢ã€ãã ãäœæããå®éã®å€ããããã«å ¥åããããšãã§ããŸãã BlackBerryã¯å®è£ äŸãæäŸããŸãã æ®å¿µãªããããããã®äŸã§ã¯QMLã䜿çšããŠããŸããããå®å šã«C ++ã§èšè¿°ãããŠããŸãã ããããç§ã¯å人çã«UIã«QMLã䜿çšããã®ã奜ãã§ãã ãŸãããã®ãããªOOPã¹ã¿ã€ã«ã¯ãBlackBerryã®äŸã®ããã«ãåã ã®
ListView
ListItemProvider
ããã®ç¶æ¿ãæå³ã
ListItemProvider
ãã®åé¡ãå®å šã«è§£æ±ºãããã®ã§ãç¬èªã®äžè¬åããã
ListItemProvider
ã ãã¹ãŠã®ãã§ãã¯ã¯ã¢ããªã±ãŒã·ã§ã³ã®å®è¡äžã«è¡ããããããC ++ãã³ãã¬ãŒãã¯ãªãã·ã§ã³ã§ã¯ãããŸããã次ã®å®è£ ãèŠãŠã¿ãŸãããã åã¿ã€ãã®ãã³ãã©ãŒã宣èšããããã®ãã«ããŒã¡ãœããã§ããaddTypeã®ç°¡åãªã¹ããããã§ããcrateItemã«é²ãåã«ïŒ
void ListViewItemProvider::addType(const QString& type, const QString& qmlasset, const listitem_callback& callback) { bb::cascades::QmlDocument* doc = bb::cascades::QmlDocument::create(qmlasset); if(!doc->hasErrors()) { doc->setParent(this); type_map.insert(type,doc); callback_map.insert(type,callback); }//TODO add additional error checking & handling }
ãã®ã¡ãœããã¯ãã¿ã€ãããšã«ç°ãªããã³ãã©ãŒãè¿œå ããŸãã ã¿ã€ãã¯
QString
ãªããžã§ã¯ãã䜿çšããŠQMLã§èšè¿°ãããããããµããŒããããã¿ã€ããä¿åããã«ã¯
QMap<QString, QmlDocument*>
ã§ååã§ãã ãã®ã¡ãœããã¯ã
QmlDocument::create
ã䜿çšããŠãqmlãªãœãŒã¹ïŒããšãã°ã
file:///partial.qml
comment ïŒã
QmlDocument
ã
QmlDocument::create
ã ãšããã§ãäžèšã®äŸã§èª¬æããããã«ã
QmlDocument::create
ã¯å®éã«ã¯
QmlDocument*
è¿ããŸããã
Builder
ãŠãŒãã£ãªãã£ã¯ã©ã¹ãžã®åç §ãè¿ãã
QmlDocument
ãäœæããŸãããã®åŸã
QmlDocument*
ãžã®æé»çãªå€æãè¡ãããã§ãã åºæ¬çã«ãããã«ã¯èå³æ·±ããã®ã¯ãããŸãããå ã«
createItem
ã¡ãœããïŒ
bb::cascades::VisualNode* ListViewItemProvider::createItem(bb::cascades::ListView* listview,const QString& type) { if(type_map.find(type)!=type_map.end()) { bb::cascades::Container* node = type_map[type]->createRootObject<bb::cascades::Container>(); return node; } Q_ASSERT_X(false,__FUNCTION__,type +" TYPE not handled"); bb::cascades::Container* con = new bb::cascades::Container(0); bb::cascades::Label* label = new bb::cascades::Label(con); label->setText("ERROR"); return con; }
ãã®ã³ãŒãã¯ãæåã«åç»é²ããã§ãã¯ããŠãããäœæããããªããžã§ã¯ããžã®ãã€ã³ã¿ãŒãè¿ã
QmlDocument::createRootObject
䜿çšããŠãªããžã§ã¯ããäœæããŸãã ããã¯ãã³ãã¬ãŒããªã®ã§ãäœæãããªããžã§ã¯ãã®ã¿ã€ããäºåã«ç¥ãå¿ èŠããããŸãã ãããŸã§ã®ãšããããã¹ãŠã®UIèŠçŽ ã«å¯ŸããŠ
Container
ãã«ãŒããªããžã§ã¯ããšããŠäœ¿çšããããšãèªåã§æ±ºå®ããŸããã ããã§ã¯ã
createItem
ã¡ãœããã®æ»ãå€ã§ãã
VisualNode*
ã¿ã€ããé©ããŠããŸãã ããã§æãèå³æ·±ãéšåã¯ãšã©ãŒåŠçã§ãããããã©ã®ããã«è¡ãå¿ èŠããããŸããïŒ ããã§ã
Q_ASSERT_X
ã
Q_ASSERT_X
ãªãããšã©ãŒãå ±åããŸãã ãã ãããããã°ãªãã®ã¢ã»ã³ããªã®å Žåãäœãå ±åãããŸããããã¡ãœããã¯å€ãè¿ãå¿ èŠããããŸãã ããã¥ã¡ã³ãã§ã¯0ã«ã€ããŠäœãèšãããŠããªããããããããã®ã¡ãœããã®æå¹ãªæ»ãå€ã§ãããšèããçç±ã¯ãããŸããã ããããäžæ¹ã§ãããã¥ã¡ã³ãã«ã¯ãè¿ããããã€ã³ã¿ãŒã
ListView
å±ããããšãæ確ã«èšèŒãããŠããŸãã0ãè¿ããŠãïŒBB10éçºè ããããæäŸããŸããïŒããã¹ã¿ãŒãããšã©ãŒãé ããŸãã ããã§ããšã©ãŒããã¹ãä»ãã®
Label
ä»ãã®å°ããª
Container
ãè¿ãããšã«ããŸããã ã¡ãã»ãŒãžãããé©åã«å®åŒåã§ãããããããŸãããããã®ããŒãžã§ã³ã§ã¯ããã¹ã¿ãŒããã®ãšã©ãŒã«æ°ä»ãå¯èœæ§ãé«ããªããŸãã ãŸãã¯ãäŸå€ãã¹ããŒããããšãã§ããŸããããã®å¶åŸ¡ãCascades APIããã³Qtã«æ»ãããåŸãBB10ã§ãµããŒããããŠããŸããQtããã³Cascadesã¯äŸå€ã䜿çšããªããããããã¯æé©ãªãªãã·ã§ã³ã§ã¯ãããŸããã
æåŸã«å®è£ ããã®ã¯
updateItem
ã¡ãœããã§ãã ç¹°ãè¿ããŸãããäžè¬åãããã³ãŒããæžãã®ã§ãç°¡åã«è§£æ±ºããããšã¯ã§ããŸããã æçµçã«ã¯ãããŒããããQMLãã¡ã€ã«ã«æ£ããå€ãããŒãããå¿ èŠããããŸããããããäžè¬çãªã¢ãããŒã
updateItem
ã¡ãœããã§å¯Ÿå¿ããã³ãŒã«ããã¯ãåŒã³åºãã ãã§ãã
if(callback_map.find(type)!=callback_map.end()) { #ifndef USE_BOOST (*callback_map[type])(node,indexPath,data); #else callback_map[type](node,indexPath,data); #endif }
ãã®ç¬éãŸã§ãUSE_BOOST
USE_BOOST
䜿çš/é衚瀺ã«ããããšã¯ã§ããŸããã§ãããããã®ãããªã³ãŒã«ããã¯ã®å ŽåãC ++ããã°ã©ããŒã¯ãŸã
boost::function
èæ ®ããå¿ èŠããã
boost::function
ã ãŸããBlackBerryã¯BoostããµããŒããããŠãããšäž»åŒµããŠãããã ãç§ã¯ç¢ºãã«ããã䜿çšããŠããŸãã ãããŠãããã¯ããã»ã©ç°¡åã§ã¯ãªãããšã
boost/type_traits/detail/cv_trait_impl.hpp
ãŸãããå°ãªããšãç§ã®ããŒã«ãã§ãŒã³ã¯
boost/type_traits/detail/cv_trait_impl.hpp
ãšã©ãŒã§ã¯ã©ãã·ã¥ããŸãã å€ãã®äººãããŒã¹ãã䜿çšããŠããããšãç¥ã£ãŠããã®ã§ãããŒã«ãã§ãŒã³ãŸãã¯Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã®èšå®ãåå ã§ããå¯èœæ§ãé«ããšã©ãŒã§ãã GCCããŒãžã§ã³4.6.3ã§ã¯ããšã©ãŒã¯ããªããã»ããµããçºçããããã§ãããšã©ãŒããã¹ãã«ã¯ãæ¬åŒ§ã®äžäžèŽã«é¢ããã¡ãã»ãŒãžã衚瀺ãããŸãã ç§ã¯ãããŒã«ã«ãã·ã³ã§ããŒã¹ãã®ããŒãžã§ã³ã«ããããé©çšããããšã奜ã¿ããããããŒã¹ãã³ãã¥ããã£ãšBlackBerryã«å ±åããŸããã BB10ã§ããŒã¹ãã䜿çšããå Žåã¯ãGitHub BlackBerryã®ããŒã¹ãããŒãžã§ã³ã䜿çšããããšããå§ãããŸãã 誰ããããŒã¹ããå¿ èŠãšããããã§ã¯ãªãã®ã§ãããŒã¹ããåã³æ éããå Žåã«åããŠãããŒã¹ããªãã®ããŒãžã§ã³ãäœæããŸããã
æåŸã«ãã³ãŒã«ããã¯ã®å®è£ ïŒ
void ApplicationUI::callbackMyListItem(bb::cascades::VisualNode* node,const QVariantList& indexPath, const QVariant& data) { bb::cascades::ImageView* image = node->findChild<bb::cascades::ImageView*>("imageview"); Q_ASSERT(image); if(image) { QString name_image = "image"; //this must be correct! QVariantMap map = data.toMap(); bool hasdata = map.contains(name_image); Q_ASSERT(hasdata); if(hasdata) image->setImageSource(map[name_image].toUrl()); } }
ãã®å Žåãç»åãžã®ãã¹ãèšå®ãããŸãã
VisualNode
ãžã®ãã€ã³ã¿ãŒã¯
VisualNode
ããç¶æ¿ããããããåãªããžã§ã¯ãã¯
findChild
ãä»ããŠååŸã§ããäœãèŠã€ãããªãå Žåã¯0ãè¿ããŸãã ãããã£ãŠããã®ã±ãŒã¹ã確èªããã«ã¯ãããã§
Q_ASSERT
ã䜿çšããããšãé©åã§ãã 次ã«ãããŒã¿ã
QVariantMap
ã§
QVariantMap
ã
QVariantMap
ã ãããã«ããäœããã®çš®é¡ã®ç»åãå¿ èŠãªã®ã§ãQVariantMapã³ã³ããå ã®èŠçŽ ã®ååšã確èªããŸãã ããã§ãªãå Žåã¯ã
Q_ASSERT
ãåã³å©ãã«ãªããŸãã ãã®ã³ãŒã«ããã¯ã¯ãåçŽã«
boost::bind
ç»é²ãããŸãã
å€ã®æ€çŽ¢ãã¢ãã«ãä»ããŠå®è£ ã§ããŸãããBB10ã¯Qtã®éåžžã®ã¢ãã«ããµããŒãããã代ããã«BlackBerryãã¢ãã«ã¯ã©ã¹ãå®è£ ããŸããã äžè¬ã«ããã¯è¯ãããšã§ãããç¹ã«Qtã¢ããªã±ãŒã·ã§ã³ãAndroidãiOSãPC / MacããŸãã¯Jollaã«ç§»æ€ãããšãã«äœ¿çšã§ããã®ã§ãå人çã«Qtã®ã¢ãã«ã奜ã¿ãŸãã ããŽãŒã«ããã¹ãã³ãµãŒã®1ã€ã§ããKDABã¯ããã®èª€è§£ã解æ¶ããQtã¢ãã«ãã«ã¹ã±ãŒãã§ã®äœ¿çšã«é©ãããã®ã«ãããœãªã¥ãŒã·ã§ã³ãå ¬éããŸããã
IDE
次ã«ãIDEã«ã€ããŠå°ã説æããŸãã åè¿°ããããã«ãIDEã¯ããŒãžã§ã³1.2ã®ãªãªãŒã¹ã§æ¹åãããŸããã ç°å¢ã¯æ¹åããã€ã€ãããŸãããå Žåã«ãã£ãŠã¯ãŸã å®å šã§ã¯ãããŸããã QMLãšãã£ã¿ãŒã¯ãŸã ååã§ã¯ãããŸããããã¯ã©ãã·ã¥ãããšãã«IDEå šäœããããããããããšã¯ãããŸããã 代æ¿æ段ã¯Qt Creatorã§ãQMLã®ãµããŒããæ¹åãããŠããŸãã çŸåšã®ãšãããCascadesã®éçºã«é¢ããŠã¯ãBlackBerryã®Momentics IDEïŒEslipse- ãããTranslatorã«åºã¥ãïŒãQtCreatorãããåªããŠããããã«æããŸãã ãŸããQtCreatorã«ã¯Cascadeãšã®çµ±åããŸã£ãããªããããNDKã«ã¯ããã«å¿ èŠãªãã¡ã€ã«ããªããããQMLèªåè£å®ã¯æ©èœããŸããã åãçç±ã§ãããžã¥ã¢ã«QMLãšãã£ã¿ãŒã¯æ©èœããŸããã ãã¡ãããQtã¯QtCreatorã§ãããã«ãããµããŒããããŠããŸãããNDKã®ããŒãžã§ã³1.2ã§ã¯ããã®æ¹åã«æ¬åœã«å€ãã®æ¹åããããŸãã QtCreatorãæäŸãããããžã§ã¯ããã³ãã¬ãŒãã¯ãMomenticsã»ã©åªããŠããŸãããããšãã°ãããŒã«ã©ã€ãºã³ãŒãã®çµ±åãæ¬ ããŠããŸãã Momenticsã®ãã³ãã¬ãŒãã«ã¯
main.cpp
ã«QTranslatorã
main.cpp
ããŠãããšããäºå®ãæ°ã«å ¥ã£ãŠããŸãã MomenticsãšQtCreator Obamaã¯ãDevAlphaããã€ã¹çšã®äœæ¥ã¢ããªã±ãŒã·ã§ã³ãäœæã§ãããããQtCreatorã§BB10ã®éçºãå¯èœã§ãããæé·ããäœå°ããããŸãã
å¿ èŠãªå Žåã¯ã ListViewItemProviderãœãŒã¹ã³ãŒããããŠã³ããŒãããŸãã...
人æ°ã®ã³ã¡ã³ãïŒ1åïŒ
ãéºäœå®çœ®æã蚪ãããã®ã¯èª°ã§ããïŒã