Qtruby

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

description

Writing ruby scripts and wished you had an easy way to add some user interface to your scripts ? look no further. Qt is an awesome, stable and widely used GUI framework that works on multiple programming languages and multiple platforms. This keynote shows how to easily add Qt GUI to your ruby scripts.

Transcript of Qtruby

Page 1: Qtruby

Introducing QtRuby

Ynon Perek

http://qtcollege.co.il

Friday, August 3, 12

Page 2: Qtruby

Friday, August 3, 12

Page 3: Qtruby

Friday, August 3, 12

Page 4: Qtruby

sudo apt-get install lynx

Friday, August 3, 12

Page 5: Qtruby

Friday, August 3, 12

Page 6: Qtruby

Agenda

• GUI Programming

• Qt Framework

• QtRuby In Action

Friday, August 3, 12

Page 7: Qtruby

About Me

• Ynon Perek

[email protected]

• http://qtcollege.co.il

Friday, August 3, 12

Page 8: Qtruby

Desktop UI

Friday, August 3, 12

Page 9: Qtruby

GUI Frameworks

Friday, August 3, 12

Page 10: Qtruby

Choose Qt

• Easy To Start

Friday, August 3, 12

Page 11: Qtruby

Choose Qt

• Easy To Start

• Mature and widely used

Friday, August 3, 12

Page 12: Qtruby

Famous Qt Apps

Friday, August 3, 12

Page 13: Qtruby

Famous Qt Apps

Friday, August 3, 12

Page 14: Qtruby

Choose Qt

• Easy To Start

• Mature and widely used

• True Cross Platform

Friday, August 3, 12

Page 15: Qtruby

Choose Qt

Friday, August 3, 12

Page 16: Qtruby

Choose Qt

• Easy To Start

• Mature and widely used

• True Cross Platform

• Cross Language

Friday, August 3, 12

Page 17: Qtruby

Choose Qt• C++

• Java

• Ruby

• Perl

• Python

• And More...

Friday, August 3, 12

Page 18: Qtruby

Q & A

Friday, August 3, 12

Page 19: Qtruby

Hello Qtrequire '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

Page 20: Qtruby

Qt Terminology

• a Widget is a visible component

• Label, Button, Table, List, ...

Friday, August 3, 12

Page 21: Qtruby

Qt Terminology

Widget

Friday, August 3, 12

Page 22: Qtruby

Qt Widgets

Friday, August 3, 12

Page 24: Qtruby

Qt Layouts

• A top level widget may contain other widgets

• Child widgets are arranged in a layout

Friday, August 3, 12

Page 25: Qtruby

DEMO: UI Designer

Friday, August 3, 12

Page 26: Qtruby

Qt Terminology

• Signal specifies a semantic event

Friday, August 3, 12

Page 27: Qtruby

Qt Terminology

• Signals are connected to slots which are the handling code

Friday, August 3, 12

Page 28: Qtruby

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

Page 29: Qtruby

Qt Actionsrequire 'Qt'require './demo1_ui.rb'

a = Qt::Application.new(ARGV)u = Ui_Form.neww = Qt::Widget.newu.setupUi(w)w.show

u.btn1.connect( SIGNAL :clicked ) {  u.list1.add_item( "Qt FTW" )}

a.exec

Friday, August 3, 12

Page 30: Qtruby

Qt Stock Dialogs

• Qt::MessageBox.about

• Qt::FileDialog.get_open_file_name

• Qt::FileDialog.get_save_file_name

Friday, August 3, 12

Page 31: Qtruby

Qt Stock Dialogsrequire 'Qt'require './demo1_ui.rb'

a = Qt::Application.new(ARGV)u = Ui_Form.neww = Qt::Widget.newu.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

Page 32: Qtruby

Q & A

Friday, August 3, 12

Page 33: Qtruby

QtRuby

• Easy UI for your programs

• Solid Foundations

Friday, August 3, 12

Page 34: Qtruby

What Next

• Qt Developers Meetup

• August 7, 19:00

• http://meetup.com/QtEverywhere/Tel-Aviv-Yafo-IL/740512/

Friday, August 3, 12

Page 36: Qtruby

About Me

• Ynon Perek

[email protected]

• http://qtcollege.co.il

Friday, August 3, 12