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
1
200
KC3 2013 懇談会LT 「QML + C++で楽しい!」
2013/9/8のKC3 2013の懇談会のLTで使ったものです
LaTeX Beamerで作りました(ドヤァ
Yuto Tokunaga
September 08, 2013
Tweet
Share
More Decks by Yuto Tokunaga
See All by Yuto Tokunaga
SyaroNote
yuntan
0
1.9k
QMLでFlappyBirdを作ろう
yuntan
0
1.5k
Haskellでbrainfckインタプリタを書きたかった話
yuntan
0
860
KC3 2014 懇親会LT 「Let It ʕ ◔π◔ʔGo」
yuntan
0
140
QMLとモバイル
yuntan
0
910
Other Decks in Programming
See All in Programming
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
100
Gemini CLI のはじめ方
ttnyt8701
1
110
知って得する@cloudflare_vite-pluginのあれこれ
chimame
1
120
React 使いじゃなくても知っておきたい教養としての React
oukayuka
14
3.8k
React は次の10年を生き残れるか:3つのトレンドから考える
oukayuka
40
15k
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
2
730
MCPを使ってイベントソーシングのAIコーディングを効率化する / Streamlining Event Sourcing AI Coding with MCP
tomohisa
0
190
Android 16KBページサイズ対応をはじめからていねいに
mine2424
0
750
[SRE NEXT] 複雑なシステムにおけるUser Journey SLOの導入
yakenji
0
830
Advanced Micro Frontends: Multi Version/ Framework Scenarios
manfredsteyer
PRO
0
110
AIともっと楽するE2Eテスト
myohei
9
3.2k
Reactの歴史を振り返る
tutinoko
1
150
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Code Reviewing Like a Champion
maltzj
524
40k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Git: the NoSQL Database
bkeepers
PRO
431
65k
KATA
mclloyd
30
14k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Into the Great Unknown - MozCon
thekraken
40
1.9k
Being A Developer After 40
akosma
90
590k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
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