Qt®4 Tutorial for the Ruby
Programming Language
This tutorial gives an introduction to GUI programming using the Qt toolkit, the Ruby Programming Language, and qt4-qtruby *. It is simply a port of Trolltech's fine Qt Tutorial. Therefore, most of the text after this paragraph comes straight from their tutorial. I have modified it as necessary to make it make sense with the Ruby bindings, and have rearranged or rewritten a few parts to make them (I hope) a bit clearer. See the Legal Notice for copyright and legal information.
This tutorial doesn't cover everything; the emphasis is on teaching the programming philosophy of GUI programming, and Qt's features are introduced as needed. Some commonly used features are never used in this tutorial.
Chapter one starts with a minimal "Hello world" program and the following chapters introduce new concepts. By Chapter 14, the "Hello world" program from Chapter 1 will have turned into a 448-line game.
If you're completely new to Qt, you might want to read How to Learn Qt if you haven't already done so. Keep in mind that like most documents about Qt, it is very C++ oriented.
Tutorial chapters:
- Hello World!
- Calling it Quits
- Family Values
- Let There Be Widgets
- Building Blocks
- Building Blocks Galore!
- One Thing Leads to Another
- Preparing for Battle
- With Cannon You Can
- Smooth as Silk
- Giving It a Shot
- Hanging in the Air the Way Bricks Don't
- Game Over
- Facing the Wall
This little game doesn't look much like a modern GUI application. It uses some GUI techniques, but after you've worked through it, I recommend checking out the Application example from Trolltech's site, which presents a small GUI application with menus, tool bars, a status bar, and so on. There are quite a few very educational Examples on Trolltech's site. They are all written in C++, but are easy enough to follow since the point of them is to demonstrate usage of the Qt library, not C++ features.
* I'm using qt4-qtruby version 1.4.7.
If you're using an older version, the main change you need to be aware of
is that you need to
require 'Qt'
rather than require 'Qt4'
.
There may be other modifications necessary, but I'm not aware of them.
I'm using qt 4.2.1 and ruby 1.8.5.