Difference between revisions of "Development/Tutorials/Qt4 Ruby Tutorial/Chapter 01"

Jump to: navigation, search
m (Translate to new syntax highlighting)
m (Text replace - "<code ruby>" to "<syntaxhighlight lang="ruby">")
Line 53: Line 53:
 
=== Line by Line Walkthrough ===
 
=== Line by Line Walkthrough ===
  
<code ruby>
+
<syntaxhighlight lang="ruby">
 
require 'Qt4'
 
require 'Qt4'
 
</code>
 
</code>
Line 59: Line 59:
 
This line loads the QtRuby extension.
 
This line loads the QtRuby extension.
  
<code ruby>
+
<syntaxhighlight lang="ruby">
 
app = Qt::Application.new(ARGV)
 
app = Qt::Application.new(ARGV)
 
</code>
 
</code>
Line 70: Line 70:
 
<strong>Note:</strong> It is essential that the [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] object be created before any window-system parts of Qt are used.
 
<strong>Note:</strong> It is essential that the [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] object be created before any window-system parts of Qt are used.
  
<code ruby>
+
<syntaxhighlight lang="ruby">
 
hello = Qt::PushButton.new('Hello World!')
 
hello = Qt::PushButton.new('Hello World!')
 
</code>
 
</code>
Line 81: Line 81:
 
the button will be a window of its own, with its own window frame and title bar.
 
the button will be a window of its own, with its own window frame and title bar.
  
<code ruby>
+
<syntaxhighlight lang="ruby">
 
hello.resize(100, 30)
 
hello.resize(100, 30)
 
</code>
 
</code>
Line 90: Line 90:
 
but instead we let the windowing system choose a position.
 
but instead we let the windowing system choose a position.
  
<code ruby>
+
<syntaxhighlight lang="ruby">
 
hello.show()
 
hello.show()
 
</code>
 
</code>
Line 96: Line 96:
 
A widget is never visible when you create it. You must call [http://doc.qt.nokia.com/latest/qwidget.html#show Qt::Widget::show()] to make it visible.
 
A widget is never visible when you create it. You must call [http://doc.qt.nokia.com/latest/qwidget.html#show Qt::Widget::show()] to make it visible.
  
<code ruby>
+
<syntaxhighlight lang="ruby">
 
app.exec()
 
app.exec()
 
</code>
 
</code>

Revision as of 21:36, 29 June 2011


Contents

Development/Tutorials/Qt4 Ruby Tutorial/Chapter 01

Hello World!
Tutorial Series   Qt4 Ruby Tutorial
Previous   Ruby
What's Next   Tutorial 2 - Calling it Quits
Further Reading   n/a

Hello World!

Qt4 Ruby Tutorial Screenshot 1.png

Files:

Overview

This first program is a simple "Hello world" example. It contains only the bare minimum you need to get a Qt application up and running. The picture above is a screenshot of this program.

Here's the complete source code for the application:

require 'Qt4'
 
app = Qt::Application.new(ARGV)
 
hello = Qt::PushButton.new('Hello World!')
hello.resize(100, 30)
hello.show()
 
app.exec()

Intro

The top level in a QtRuby application usually only needs to perform some kind of initialization and then pass control to the Qt library, which then tells the program about the user's actions via events.

There has to be exactly one Qt::Application object in every GUI application that uses Qt. Qt::Application manages various application-wide resources, such as the default font and cursor.

Qt::PushButton is a GUI push button that the user can press and release. It manages its own look and feel, like every other Qt::Widget. A widget is a user interface object that can process user input and draw graphics. The programmer can change both the overall look and feel and many minor properties of it (such as color), as well as the widget's content. A Qt::PushButton can show either text or a Qt::Icon.

Line by Line Walkthrough

require 'Qt4'
</code>
 
This line loads the QtRuby extension.
 
<syntaxhighlight lang="ruby">
app = Qt::Application.new(ARGV)
</code>
 
'''<tt>app</tt>''' is this program's [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] instance. It is created here. 
We pass '''<tt>ARGV</tt>''' to the [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] constructor
so that it can process certain standard command-line arguments (such as '''<tt>-display</tt>''' under X11). 
All command-line arguments recognized by Qt are removed from '''<tt>ARGV</tt>'''. 
 
<strong>Note:</strong> It is essential that the [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] object be created before any window-system parts of Qt are used.
 
<syntaxhighlight lang="ruby">
hello = Qt::PushButton.new('Hello World!')
</code>
 
Here, after the [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application], comes the first window-system code: A push button is created.
 
The button is set up to display the text "Hello world!". 
Because we don't specify a parent window (as second argument to the 
[http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] constructor), 
the button will be a window of its own, with its own window frame and title bar.
 
<syntaxhighlight lang="ruby">
hello.resize(100, 30)
</code>
 
The button is set up to be 100 pixels wide and 30 pixels high 
(excluding the window frame, which is provided by the windowing system). 
We could call [http://doc.qt.nokia.com/latest/qwidget.html#pos-prop Qt::Widget::move()] to assign a specific screen position to the widget, 
but instead we let the windowing system choose a position.
 
<syntaxhighlight lang="ruby">
hello.show()
</code>
 
A widget is never visible when you create it. You must call [http://doc.qt.nokia.com/latest/qwidget.html#show Qt::Widget::show()] to make it visible.
 
<syntaxhighlight lang="ruby">
app.exec()
</code>
 
This is where our program passes control to Qt. 
[http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()] will return when the application exits. 
([http://doc.qt.nokia.com/latest/qcoreapplication.html Qt::CoreApplication] is [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application]'s base class. 
It implements [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application]'s core, non-GUI functionality and can be used when developing non-GUI applications.)
 
In [http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()], Qt receives and processes user and system events and passes these on to the appropriate widgets.
 
You should now try to run this program.
 
=== Running the Application ===
 
When you run the application, you will see a small window filled with a single button, and on it you can read the famous words: "Hello world!"
 
=== Exercises ===
 
Try to resize the window. Click the button. If you're running X11, 
try running the program with the '''<tt>-geometry</tt>''' option (for example, '''<tt>-geometry 100x200+10+20</tt>''').
 
[[Category:Ruby]]

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal