Slide 1

Slide 1 text

Introducing QtRuby Ynon Perek http://qtcollege.co.il Friday, August 3, 12

Slide 2

Slide 2 text

Friday, August 3, 12

Slide 3

Slide 3 text

Friday, August 3, 12

Slide 4

Slide 4 text

sudo apt-get install lynx Friday, August 3, 12

Slide 5

Slide 5 text

Friday, August 3, 12

Slide 6

Slide 6 text

Agenda • GUI Programming • Qt Framework • QtRuby In Action Friday, August 3, 12

Slide 7

Slide 7 text

About Me • Ynon Perek • [email protected] • http://qtcollege.co.il Friday, August 3, 12

Slide 8

Slide 8 text

Desktop UI Friday, August 3, 12

Slide 9

Slide 9 text

GUI Frameworks Friday, August 3, 12

Slide 10

Slide 10 text

Choose Qt • Easy To Start Friday, August 3, 12

Slide 11

Slide 11 text

Choose Qt • Easy To Start • Mature and widely used Friday, August 3, 12

Slide 12

Slide 12 text

Famous Qt Apps Friday, August 3, 12

Slide 13

Slide 13 text

Famous Qt Apps Friday, August 3, 12

Slide 14

Slide 14 text

Choose Qt • Easy To Start • Mature and widely used • True Cross Platform Friday, August 3, 12

Slide 15

Slide 15 text

Choose Qt Friday, August 3, 12

Slide 16

Slide 16 text

Choose Qt • Easy To Start • Mature and widely used • True Cross Platform • Cross Language Friday, August 3, 12

Slide 17

Slide 17 text

Choose Qt • C++ • Java • Ruby • Perl • Python • And More... Friday, August 3, 12

Slide 18

Slide 18 text

Q & A Friday, August 3, 12

Slide 19

Slide 19 text

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 Friday, August 3, 12

Slide 20

Slide 20 text

Qt Terminology • a Widget is a visible component • Label, Button, Table, List, ... Friday, August 3, 12

Slide 21

Slide 21 text

Qt Terminology Widget Friday, August 3, 12

Slide 22

Slide 22 text

Qt Widgets Friday, August 3, 12

Slide 23

Slide 23 text

Qt Widgets http://doc.qt.nokia.com/4.7-snapshot/gallery.html Friday, August 3, 12

Slide 24

Slide 24 text

Qt Layouts • A top level widget may contain other widgets • Child widgets are arranged in a layout Friday, August 3, 12

Slide 25

Slide 25 text

DEMO: UI Designer Friday, August 3, 12

Slide 26

Slide 26 text

Qt Terminology • Signal specifies a semantic event Friday, August 3, 12

Slide 27

Slide 27 text

Qt Terminology • Signals are connected to slots which are the handling code Friday, August 3, 12

Slide 28

Slide 28 text

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 Friday, August 3, 12

Slide 29

Slide 29 text

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 Friday, August 3, 12

Slide 30

Slide 30 text

Qt Stock Dialogs • Qt::MessageBox.about • Qt::FileDialog.get_open_file_name • Qt::FileDialog.get_save_file_name Friday, August 3, 12

Slide 31

Slide 31 text

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 Friday, August 3, 12

Slide 32

Slide 32 text

Q & A Friday, August 3, 12

Slide 33

Slide 33 text

QtRuby • Easy UI for your programs • Solid Foundations Friday, August 3, 12

Slide 34

Slide 34 text

What Next • Qt Developers Meetup • August 7, 19:00 • http://meetup.com/QtEverywhere/ Tel-Aviv-Yafo-IL/740512/ Friday, August 3, 12

Slide 35

Slide 35 text

Resources • Ruby Qt/KDE Guide http://techbase.kde.org/Development/ Languages/Ruby • Qt Tutorial Videos http://qt-project.org/videos Friday, August 3, 12

Slide 36

Slide 36 text

About Me • Ynon Perek • [email protected] • http://qtcollege.co.il Friday, August 3, 12