Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby Desktop Apps with Qt

Ruby Desktop Apps with Qt

Writing desktop applications using ruby and Qt

ynonperek

June 25, 2012
Tweet

More Decks by ynonperek

Other Decks in Technology

Transcript

  1. Back To The Desktop
    Ynon Perek
    http://qtcollege.co.il
    Monday, June 25, 12

    View full-size slide

  2. WHY ?
    Monday, June 25, 12

    View full-size slide

  3. Desktop Apps
    • Office
    • Web Browser
    • Skype
    • IDE
    • Torrent / FTP Client
    Monday, June 25, 12

    View full-size slide

  4. So You Want To Write A Ruby
    Desktop App ...
    Monday, June 25, 12

    View full-size slide

  5. Mature and Widely Used
    • Choosing a widely used framework ensures that you
    won’t run into bumps when scaling up
    • Choosing a framework with future ensures it won’t
    suddenly disappear
    Monday, June 25, 12

    View full-size slide

  6. Cross Platform
    • The more the better
    • Code once, look good everywhere
    Monday, June 25, 12

    View full-size slide

  7. Cross Platform
    Monday, June 25, 12

    View full-size slide

  8. Cross Language
    • C++
    • Java
    • Ruby
    • Perl
    • Python
    Monday, June 25, 12

    View full-size slide

  9. Good UI Designer
    Monday, June 25, 12

    View full-size slide

  10. Choose Qt
    • Cross Platform
    • Cross Languages
    • Awesome Tools
    • Here To Stay
    Monday, June 25, 12

    View full-size slide

  11. Famous Qt Apps
    • Skype
    • Google Earth
    • KDE
    • KOffice
    • VLC
    • PhantomJS
    Monday, June 25, 12

    View full-size slide

  12. QtRuby In Action
    • Installation
    • UI Design
    • Add Actions
    • Use Stock Dialogs
    • Code:
    http://github.com/ynonp/
    ruby-underground-talk
    Monday, June 25, 12

    View full-size slide

  13. Installation: Windows
    gem install qtbindings
    Monday, June 25, 12

    View full-size slide

  14. Installation: Mac/Linux
    • Install Qt SDK from Nokia
    • gem install qtbindings
    • Details: https://github.com/ryanmelt/
    qtbindings
    Monday, June 25, 12

    View full-size slide

  15. Hello QtRuby
    1 require 'Qt'
    2
    3 app = Qt::Application.new ( ARGV )
    4
    5 b = Qt::PushButton.new( "DIE ALL HUMANS" )
    6 b.connect ( SIGNAL :clicked ) { app.exit }
    7
    8 b.show
    9 app.exec
    10
    Monday, June 25, 12

    View full-size slide

  16. Signals & Slots
    • Signals are Semantic Events
    • Slots are handlers (methods or blocks)
    • signal -----> slot
    Monday, June 25, 12

    View full-size slide

  17. Object Trees
    • Each Qt::Widget may contain other widgets
    • Pass a container (parent) to initialize
    • Use layouts to determine ordering
    Monday, June 25, 12

    View full-size slide

  18. No Layout
    1 require 'Qt'
    2
    3 app = Qt::Application.new ( ARGV )
    4
    5 w = Qt::Widget.new
    6 b = Qt::PushButton.new( "Ouch! That hurt" , w)
    7 c = Qt::PushButton.new("9", w)
    8
    9 w.show
    10
    11 app.exec
    12
    Monday, June 25, 12

    View full-size slide

  19. With Layout
    1 require 'Qt'
    2
    3 app = Qt::Application.new ( ARGV )
    4
    5 w = Qt::Widget.new
    6
    7 b = Qt::PushButton.new( "Ouch! That hurt")
    8 c = Qt::PushButton.new("9")
    9
    10 l = Qt::VBoxLayout.new( w )
    11 l.addWidget ( b )
    12 l.addWidget ( c )
    13
    14 w.show
    15
    16 app.exec
    17
    Monday, June 25, 12

    View full-size slide

  20. Monday, June 25, 12

    View full-size slide

  21. UI Design
    • Run Qt Designer
    • Make GUI
    • Save as .ui file
    • Convert to ruby with:
    rbuic4 file.ui -x -o file_ui.rb
    Monday, June 25, 12

    View full-size slide

  22. Nested Layouts
    Combine different layout
    managers to make the layout
    on the right
    Monday, June 25, 12

    View full-size slide

  23. Add Actions
    • Connect actions with
    • obj.connect ( SIGNAL :sig ) { action }
    Monday, June 25, 12

    View full-size slide

  24. Use Stock Dialogs
    • Qt::MessageBox.about
    • Qt::FileDialog.get_open_file_name
    • Qt::FileDialog.get_save_file_name
    Monday, June 25, 12

    View full-size slide

  25. QtRuby First App
    • Rapid UI with Designer
    • Easy layouts with Qt’s
    Layout Managers
    • Extensive library of Widgets
    and Stock Dialogs
    Monday, June 25, 12

    View full-size slide

  26. Add Some Color
    • Use css-like style sheets to
    style your app
    • Syntax: http://qt-project.org/
    doc/qt-4.8/stylesheet-
    syntax.html
    Monday, June 25, 12

    View full-size slide

  27. Happy Coding !
    • Ynon Perek
    • http://qtcollege.co.il
    [email protected]
    Monday, June 25, 12

    View full-size slide