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
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Scaling GitHub
holman
464
140k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
55k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
Exploring anti-patterns in Rails
aemeredith
3
430
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
BBQ
matthewcrist
89
10k
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