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
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
660
Advanced Perl Moose
ynonperek
4
2.7k
Ruby Desktop Apps with Qt
ynonperek
1
650
Perl Golf
ynonperek
4
2.3k
git
ynonperek
3
860
Concurrency In Qt Applications
ynonperek
1
400
Moose Design Patterns
ynonperek
4
640
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Agile that works and the tools we love
rasmusluckow
331
22k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
We Are The Robots
honzajavorek
0
320
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
370
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
460
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
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