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
QtRuby for Qt Developers
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ynonperek
August 06, 2012
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
QtRuby for Qt Developers
ynonperek
August 06, 2012
More Decks by ynonperek
See All by ynonperek
Qt Hybrid Apps
ynonperek
1
320
QtRuby In Action
ynonperek
1
190
Cool CPAN Modules
ynonperek
2
650
Advanced Perl Moose
ynonperek
4
2.7k
Ruby Desktop Apps with Qt
ynonperek
1
650
Perl Golf
ynonperek
4
2.2k
git
ynonperek
3
850
Concurrency In Qt Applications
ynonperek
1
390
Moose Design Patterns
ynonperek
4
630
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
230
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
66
55k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
170
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Mind Mapping
helmedeiros
PRO
1
260
Navigating Team Friction
lara
192
16k
30 Presentation Tips
portentint
PRO
1
330
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
170
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
160
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
790
Transcript
Introducing QtRuby Ynon Perek http://qtcollege.co.il Monday, August 6, 12
What is wrong with C++ Monday, August 6, 12
Non-Virtual By Default int main(int argc, char **argv) { Foo
*f = new Bar(); // Calls Foo::doSomething by default f->doSomething(); } Monday, August 6, 12
Implicit Copy Ctor int printData( Foo f ) { }
int printRef ( Foo& f ) { } int main(int argc, char **argv) { Foo f; printData( f ); printRef( f ); } Monday, August 6, 12
Implicit Type Coercion int printData( Foo f ) { }
int printRef ( Foo& f ) { } int main(int argc, char **argv) { Foo f; // Convert to Foo printData( 5 ); } Monday, August 6, 12
Pointers float (SomeClass::*my_memfunc_ptr)(int, char *); Monday, August 6, 12
No Reflection Monday, August 6, 12
No Anonymous Functions Monday, August 6, 12
No Anonymous Functions • Function pointers don’t count Monday, August
6, 12
No Anonymous Functions • Function pointers don’t count • Functors
don’t count Monday, August 6, 12
C++ Alternatives • Perl • Ruby • Java • Python
Monday, August 6, 12
C++ Alternatives • Perl • Ruby • Java • Python
they all got Monday, August 6, 12
Hello Qt require 'Qt' app = Qt::Application.new( ARGV ) w
= Qt::Label.new( "Hello World" ) w.set_alignment( Qt::AlignHCenter | Qt::AlignVCenter ) w.show app.exec Monday, August 6, 12
DEMO: UI Designer Monday, August 6, 12
Qt Terminology • Signal specifies a semantic event Monday, August
6, 12
Qt Terminology • Signals are connected to slots which are
the handling code Monday, August 6, 12
Designer Takeaways • Drag & Drop to create UI •
Save as .ui file • Run: rbuic4 file.ui -x -o file_ui.rb • Use resulting .rb file but don’t modify it Monday, August 6, 12
Qt Actions require 'Qt' require './demo1_ui.rb' a = Qt::Application.new(ARGV) u
= Ui_Form.new w = Qt::Widget.new u.setupUi(w) w.show u.btn1.connect( SIGNAL :clicked ) { u.list1.add_item( "Qt FTW" ) } a.exec Monday, August 6, 12
Qt Actions require 'Qt' app = Qt::Application.new( ARGV ) s1
= Qt::Slider.new( Qt::Horizontal ) s2 = Qt::Slider.new( Qt::Horizontal ) Qt::Object.connect( s1, SIGNAL("valueChanged(int)"), s2, SLOT( "setValue(int)") ) Qt::Object.connect( s2, SIGNAL("valueChanged(int)"), s1, SLOT( "setValue(int)") ) s1.show s2.show app.exec Monday, August 6, 12
Qt Stock Dialogs • Qt::MessageBox.about • Qt::FileDialog.get_open_file_name • Qt::FileDialog.get_save_file_name Monday,
August 6, 12
Qt Stock Dialogs require 'Qt' require './demo1_ui.rb' a = Qt::Application.new(ARGV)
u = Ui_Form.new w = Qt::Widget.new u.setupUi(w) w.show u.btn1.connect( SIGNAL :clicked ) { filename = Qt::FileDialog.get_open_file_name; u.list1.add_item( filename ) } a.exec Monday, August 6, 12
Q & A Monday, August 6, 12
QtRuby • Easy UI for your programs • Solid Foundations
• Use existing Qt knowledge Monday, August 6, 12
Resources • Ruby Qt/KDE Guide http://techbase.kde.org/Development/ Languages/Ruby • Qt Tutorial
Videos http://qt-project.org/videos Monday, August 6, 12
About Me • Ynon Perek •
[email protected]
• http://qtcollege.co.il Monday,
August 6, 12