Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
KC3 2013 懇談会LT 「QML + C++で楽しい!」
Search
Yuto Tokunaga
September 08, 2013
Programming
200
1
Share
KC3 2013 懇談会LT 「QML + C++で楽しい!」
2013/9/8のKC3 2013の懇談会のLTで使ったものです
LaTeX Beamerで作りました(ドヤァ
Yuto Tokunaga
September 08, 2013
More Decks by Yuto Tokunaga
See All by Yuto Tokunaga
SyaroNote
yuntan
0
2k
QMLでFlappyBirdを作ろう
yuntan
0
1.6k
Haskellでbrainfckインタプリタを書きたかった話
yuntan
0
870
KC3 2014 懇親会LT 「Let It ʕ ◔π◔ʔGo」
yuntan
0
140
QMLとモバイル
yuntan
0
1k
Other Decks in Programming
See All in Programming
過去のレビュー知見をSkillsで資産化した話
pkshadeck
PRO
1
2.1k
継続的な負荷検証を目指して
pyama86
3
1.3k
決定論 vs 確率論:Gemini 3 FlashとTF-IDFを組み合わせた「法規判定エンジン」の構築
shukob
0
170
Firefoxにコントリビューションして得られた学び
ken7253
2
170
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
110
UaaL×Androidアプリのメモリ計測 — Memory Profilerの先へ
rio432
0
160
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
1
300
WebAssembly を読み込むベストプラクティス 2026年春版 / Best Practices for Loading WebAssembly (Spring 2026)
petamoriken
5
1.1k
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
0
200
関係性から理解する"同一性"の型用語たち
pvcresin
2
280
PHPでバイナリをパースして理解するASN.1
muno92
PRO
0
470
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
560
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
550
Are puppies a ranking factor?
jonoalderson
1
3.4k
Documentation Writing (for coders)
carmenintech
77
5.3k
Technical Leadership for Architectural Decision Making
baasie
3
370
Information Architects: The Missing Link in Design Systems
soysaucechin
0
930
GraphQLとの向き合い方2022年版
quramy
50
15k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
260
WCS-LA-2024
lcolladotor
0
600
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Typedesign – Prime Four
hannesfritz
42
3k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
200
Transcript
QML + C++ Ͱ ָ͍͠ʂ ಙӬ ༤ే OUCC Sep 8th
ಙӬ ༤ే QML + C++ 1/13
Qtͱ Qt ͱΫϩεϓϥοτϑΥʔϜͷΞϓϦέʔγϣϯ։ ൃϑϨʔϜϫʔΫͰ͢ɻ؆୯ʹ͍͑ Qt Ͱ࡞ͨ͠ι ϑτଟ͘ͷػثͰಈ͘ͱ͍͏͜ͱͰ͢ɻ දతͳϓϥοτϑΥʔϜͱͯ͠ Windows, Mac
OS X, Unix Linux(X Window System) ͜ΕΒΛΧόʔͯ͠ ͓Γ࣮࣭తʹύιίϯͳΒͯ͢ಈ͖·͢ɻϞόΠϧ ରԠ͍ͯ͠·͕͢ Android ͱ iOSɺWindows Phone ࢼݧతͳஈ֊Ͱਖ਼ࣜʹରԠ͢Δͷ͍ۙকདྷ Ͱ͢ɻ ຊ Qt ϢʔβʔձϗʔϜϖʔδΑΓ ಙӬ ༤ే QML + C++ 2/13
࠾༻ࣄྫ Qt VirtualBox, Google Earth, Skype, Handbreak, KDE ͳͲͳ
Ͳʹ࠾༻͞Ε͍ͯΔ ಙӬ ༤ే QML + C++ 3/13
࠾༻ࣄྫ Qt VirtualBox, Google Earth, Skype, Handbreak, KDE ͳͲͳ
Ͳʹ࠾༻͞Ε͍ͯΔ ࠷ۙͷΞϓϦʮ؋ϝϞʯ Qt Λͬͯ࡞ΒΕ͍ͯ·͢ʂ ʂ ʂ http://relog.xii.jp/mt5r/2013/08/post-349.html ಙӬ ༤ే QML + C++ 3/13
Qt Quickͱ • QML(Qt Meta-Object Language) Qt Quick Ͱ৽ͨʹಋೖ͞Εͨ,UI Λهड़͢ΔͨΊͷϓϩάϥ
ϛϯάݴޠ. એݴܕݴޠʹྨ͞ΕΔ. ϩδοΫͷهड़ʹ JavaScript ͕͑Δ. • Qt Creator IDE QML/JS ʹରԠͨ͠ IDE • QtDeclarative Ϟδϡʔϧ QML Λ࣮ߦ͢ΔͨΊͷΤϯδϯ Ҏ্ͷ 3 ͔ͭΒߏ͞ΕΔ UI ςΫϊϩδʔͷϑϨʔϜϫʔΫ. Qt Japanese Blog ΑΓ ಙӬ ༤ే QML + C++ 4/13
Qt Quickͱ • QML(Qt Meta-Object Language) Qt Quick Ͱ৽ͨʹಋೖ͞Εͨ,UI Λهड़͢ΔͨΊͷϓϩάϥ
ϛϯάݴޠ. એݴܕݴޠʹྨ͞ΕΔ. ϩδοΫͷهड़ʹ JavaScript ͕͑Δ. • Qt Creator IDE QML/JS ʹରԠͨ͠ IDE • QtDeclarative Ϟδϡʔϧ QML Λ࣮ߦ͢ΔͨΊͷΤϯδϯ Ҏ্ͷ 3 ͔ͭΒߏ͞ΕΔ UI ςΫϊϩδʔͷϑϨʔϜϫʔΫ. Qt Japanese Blog ΑΓ QML ͱ JS ΛͬͯΞϓϦΛ࡞Δ = Qt Quick ͱݺΜͰ͍͍Μ ͡Όͳ͍͔ͱ ಙӬ ༤ే QML + C++ 4/13
QMLͬͯͲΜͳݴޠʁ ެ͔ࣜΒαϯϓϧͱͯ͠ग़͍ͯΔ ͷΛհ͠·͢ ಙӬ ༤ే QML + C++ 5/13
Ͳ͜Ͱಈ͘Α ಙӬ ༤ే QML + C++ 6/13
Ͳ͜Ͱಈ͘Α ָ͍͠ʂ ʂ ಙӬ ༤ే QML + C++ 7/13
͏ͪΐ ͬͱ࣮༻తͳͷΛ Qt Λͬͯͳʹ͔࣮༻తͳͷΛ࡞Γ͍ͨͳʙ . . 1 JavaScript ΛΒͳ͍ (͓͍͍͠ͷʁ)
. . 2 QML + JS Ͱશͯͷ Qt ͷϞδϡʔϧ͕͑Δ Θ͚Ͱͳ͍ . . 3 C++Ͱॻ͔Εͨ Qt ϥΠϒϥϦͦͷ··Ͱ QML ͔Β͑ͳ͍ . . 4 ษڧதͷ C++ Λ͍͍ͨ ಙӬ ༤ే QML + C++ 8/13
͏ͪΐ ͬͱ࣮༻తͳͷΛ Qt Λͬͯͳʹ͔࣮༻తͳͷΛ࡞Γ͍ͨͳʙ . . 1 JavaScript ΛΒͳ͍ (͓͍͍͠ͷʁ)
. . 2 QML + JS Ͱશͯͷ Qt ͷϞδϡʔϧ͕͑Δ Θ͚Ͱͳ͍ . . 3 C++Ͱॻ͔Εͨ Qt ϥΠϒϥϦͦͷ··Ͱ QML ͔Β͑ͳ͍ . . 4 ษڧதͷ C++ Λ͍͍ͨ C++ Ͱ QML Module Λ࡞ͬͯͦΕΛ QML ͔Β ͏͜ͱʹ͠Α͏ʂ ಙӬ ༤ే QML + C++ 8/13
QML Moduleͱ UI ෦ػೳΛఆٛͨ͠ͷ QML ͔ΒಡΈࠐΜͰ͑Δ QML Ͱ C++ Ͱ࡞ΕΔʂ
ಙӬ ༤ే QML + C++ 9/13
QML Moduleͱ UI ෦ػೳΛఆٛͨ͠ͷ QML ͔ΒಡΈࠐΜͰ͑Δ QML Ͱ C++ Ͱ࡞ΕΔʂ
UI Λ QML Ͱ, ϩδοΫΛ C++Ͱ࣮͢Δ͜ͱ Ͱ,UI ͷίʔυͱϩδοΫͷίʔυΛ͚ΒΕΔ! ಙӬ ༤ే QML + C++ 9/13
ͦ͏ͩ,twitterΫϥΠΞϯτΛ࡞Ζ͏ OAuth ೝূͷͨΊͷϥΠϒϥϦʹ kQOAuth Λ༻ ೝূը໘, λΠϜϥΠϯͳͲ UI QML
Ͱ࣮͠,OAuth ೝ ূ,twitter ͱͷ௨৴, औಘͨ͠σʔλͷཧͳͲ C++Ͱ࣮ ࠓճ Ubuntu SDK ͍·ͨ͠ ಙӬ ༤ే QML + C++ 10/13
. . . . . . aztterhometlhelper.h 1 #include <QObject>
2 #include "aztteruserstream.h" 3 4 class AztterHomeTLHelper : public QObject 5 { 6 Q_OBJECT 7 Q_PROPERTY(QVariantMap tweet READ tweet) 8 9 public: 10 explicit AztterHomeTLHelper(QObject *parent = 0); 11 Q_INVOKABLE void startFetching(); 12 Q_INVOKABLE void streamDisconnect(); 13 QVariantMap tweet() const; 14 15 signals: 16 void tweetReceived(); 17 18 private slots: 19 void parseStream(const QByteArray&); 20 private: 21 void parseTweet(const QJsonObject&); 22 23 AztterUserStream *m_stream; 24 QVariantMap m_tweet; 25 }; Yuuto Tokunaga QML + C++
. . . . . . Timeline.qml 1 import QtQuick
2.0 2 import Ubuntu.Components 0.1 3 import Ubuntu.Components.ListItems 0.1 as ListItem 4 import "aztterplugin" 1.0 5 6 ListView { 7 id: homeTLView 8 9 Component.onCompleted: helper.startFetching() 10 11 AztterHomeTLHelper { 12 id: helper 13 onTweetReceived: listModel.prepend(tweet) 14 } 15 AztterTweetListModel { 16 id: listModel 17 } 18 model: listModel 19 delegate: TweetItem { 20 text: tweetText 21 name: userName 22 screenName: "@" + userScreenName 23 iconSource: userProfileImageUrl 24 } 25 } Yuuto Tokunaga QML + C++
͜Μͳ͔Μ͡ʹ ಙӬ ༤ే QML + C++ 11/13
͜Μͳ͔Μ͡ʹ ָ͍͠ʂ ʂ ಙӬ ༤ే QML + C++ 12/13
͍͞͝ʹ ߴʹಈ࡞͠, ͔ͭ Write once, run anywhere Λࢦ͢ Qt ಙӬ
༤ే QML + C++ 13/13
͍͞͝ʹ ߴʹಈ࡞͠, ͔ͭ Write once, run anywhere Λࢦ͢ Qt ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
ಙӬ ༤ే QML + C++ 13/13