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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yuto Tokunaga
September 08, 2013
Programming
210
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
880
KC3 2014 懇親会LT 「Let It ʕ ◔π◔ʔGo」
yuntan
0
140
QMLとモバイル
yuntan
0
1k
Other Decks in Programming
See All in Programming
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
160
今さら聞けない .NET CLI
htkym
0
170
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
380
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
200
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3.3k
5分で問診!Composer セキュリティ健康診断
codmoninc
0
790
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
240
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
630
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
210
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
630
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
280
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
210
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
3
3.5k
Why Our Code Smells
bkeepers
PRO
340
58k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
440
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
420
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
270
Raft: Consensus for Rubyists
vanstee
141
7.6k
Practical Orchestrator
shlominoach
191
12k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building Applications with DynamoDB
mza
96
7.2k
Visualization
eitanlees
152
17k
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