Archive:Development/Tutorials/Qt4 Ruby Tutorial/Chapter 01 (zh CN): Difference between revisions
(Created page with '{{Template:I18n/Language Navigation Bar_(zh_CN)|Development/Tutorials/Qt4 Ruby Tutorial/Chapter 01}} {{TutorialBrowser_(zh_CN)| series=[[Development/Tutorials/Qt4_Ruby_Tutorial...') |
m (AnneW moved page Development/Tutorials/Qt4 Ruby Tutorial/Chapter 01 (zh CN) to Archive:Development/Tutorials/Qt4 Ruby Tutorial/Chapter 01 (zh CN) without leaving a redirect: Obsolete) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 7: | Line 7: | ||
name=Hello World!| | name=Hello World!| | ||
next=[[Development/Tutorials/Qt4_Ruby_Tutorial/ | pre=[http://www.ruby-lang.org Ruby]| | ||
next=[[Development/Tutorials/Qt4_Ruby_Tutorial/Chapter_2_(zh_CN)|教学 2 - Calling it Quits]] | |||
}} | }} | ||
== Hello World!== | == Hello World!== | ||
Line 21: | Line 23: | ||
以下是完整的应用程序原始码: | 以下是完整的应用程序原始码: | ||
< | <syntaxhighlight lang="ruby"> | ||
require 'Qt4' | require 'Qt4' | ||
Line 31: | Line 33: | ||
app.exec() | app.exec() | ||
</ | </syntaxhighlight> | ||
===简介=== | ===简介=== | ||
Line 43: | Line 45: | ||
=== 一行一行的浏览=== | === 一行一行的浏览=== | ||
< | <syntaxhighlight lang="ruby"> | ||
require 'Qt4' | require 'Qt4' | ||
</ | </syntaxhighlight> | ||
此行载入 QtRuby 扩充。 | 此行载入 QtRuby 扩充。 | ||
< | <syntaxhighlight lang="ruby"> | ||
app = Qt::Application.new(ARGV) | app = Qt::Application.new(ARGV) | ||
</ | </syntaxhighlight> | ||
'''<tt>app</tt>''' 是程序的 [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] 实例(instance)。它是在这里建立的。我们传递 '''<tt>ARGV</tt>''' 到 [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] 建构子(constructor),使之能够处理某些标准的命令行参数(如 X11 的 '''<tt>-display</tt>''')。所有 Qt 能识别的命令行参数将会从 '''<tt>ARGV</tt>''' 移除 。 | '''<tt>app</tt>''' 是程序的 [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] 实例(instance)。它是在这里建立的。我们传递 '''<tt>ARGV</tt>''' 到 [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] 建构子(constructor),使之能够处理某些标准的命令行参数(如 X11 的 '''<tt>-display</tt>''')。所有 Qt 能识别的命令行参数将会从 '''<tt>ARGV</tt>''' 移除 。 | ||
Line 57: | Line 59: | ||
<strong>注意:</strong> 最重要的是, [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] 对象要在使用任何 Qt 的窗口系统组件之前建立。 | <strong>注意:</strong> 最重要的是, [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] 对象要在使用任何 Qt 的窗口系统组件之前建立。 | ||
< | <syntaxhighlight lang="ruby"> | ||
hello = Qt::PushButton.new('Hello World!') | hello = Qt::PushButton.new('Hello World!') | ||
</ | </syntaxhighlight> | ||
在[http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] 后,第一个出现的窗口系统程序代码:建立一个 push 按钮。 | 在[http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] 后,第一个出现的窗口系统程序代码:建立一个 push 按钮。 | ||
Line 65: | Line 67: | ||
该按钮设定为显示文字「Hello world!」。因为我们没有指定父窗口(作为 [http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] 建构子的第二个参数),该按钮将有它自己的窗口、自己的窗框和标题栏。 | 该按钮设定为显示文字「Hello world!」。因为我们没有指定父窗口(作为 [http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] 建构子的第二个参数),该按钮将有它自己的窗口、自己的窗框和标题栏。 | ||
< | <syntaxhighlight lang="ruby"> | ||
hello.resize(100, 30) | hello.resize(100, 30) | ||
</ | </syntaxhighlight> | ||
该按钮设定为100像素(pixels)宽和30像素高(不包括窗框,它是由窗口系统提供的)。我们可以呼叫 [http://doc.qt.nokia.com/latest/qwidget.html#pos-prop Qt::Widget::move()] 来指派 widget 在特定的屏幕位置,不过这里我们让窗口系统选择位置。 | 该按钮设定为100像素(pixels)宽和30像素高(不包括窗框,它是由窗口系统提供的)。我们可以呼叫 [http://doc.qt.nokia.com/latest/qwidget.html#pos-prop Qt::Widget::move()] 来指派 widget 在特定的屏幕位置,不过这里我们让窗口系统选择位置。 | ||
< | <syntaxhighlight lang="ruby"> | ||
hello.show() | hello.show() | ||
</ | </syntaxhighlight> | ||
当您建立 widget 时,它是不可见的。您必须呼叫Q[http://doc.qt.nokia.com/latest/qwidget.html#show Qt::Widget::show()] 使其可见。 | 当您建立 widget 时,它是不可见的。您必须呼叫Q[http://doc.qt.nokia.com/latest/qwidget.html#show Qt::Widget::show()] 使其可见。 | ||
< | <syntaxhighlight lang="ruby"> | ||
app.exec() | app.exec() | ||
</ | </syntaxhighlight> | ||
这里是我们的程序将控制权传递到 Qt 的地方。[http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()] 会在应用程序结束时返回。([http://doc.qt.nokia.com/latest/qcoreapplication.html Qt::CoreApplication] 是 [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application]的基础类别。它实现[http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] 的核心,非GUI 功能,并且可用于开发非 GUI 应用程序。) | 这里是我们的程序将控制权传递到 Qt 的地方。[http://doc.qt.nokia.com/latest/qcoreapplication.html#exec Qt::CoreApplication::exec()] 会在应用程序结束时返回。([http://doc.qt.nokia.com/latest/qcoreapplication.html Qt::CoreApplication] 是 [http://doc.qt.nokia.com/latest/qapplication.html Qt::Application]的基础类别。它实现[http://doc.qt.nokia.com/latest/qapplication.html Qt::Application] 的核心,非GUI 功能,并且可用于开发非 GUI 应用程序。) | ||
Line 88: | Line 90: | ||
===执行应用程序=== | ===执行应用程序=== | ||
当您执行应用程序,您会看到一个放着单一按钮的小窗口。在按钮上您可以读到那句名言:「Hello world!」 | 当您执行应用程序,您会看到一个放着单一按钮的小窗口。在按钮上您可以读到那句名言:「Hello world!」 | ||
===练习=== | ===练习=== | ||
尝试调整窗口大小。按下按钮。如果您正在执行 X11,尝试加入 '''<tt>-geometry</tt>''' 选项来执行程序(例如,'''<tt>-geometry 100x200+10+20</tt>''')。 | |||
[[Category:Ruby]] |
Latest revision as of 15:35, 23 June 2013
Template:I18n/Language Navigation Bar (zh CN)
Template:TutorialBrowser (zh CN)
Hello World!
档案:
概览
第一个程序是一个简单的「Hello world」范例。它仅包含了你完成并运作一个 Qt 应用程序的最少需求。上图是这支程序的屏幕撷图。
以下是完整的应用程序原始码:
require 'Qt4'
app = Qt::Application.new(ARGV)
hello = Qt::PushButton.new('Hello World!')
hello.resize(100, 30)
hello.show()
app.exec()
简介
QtRuby 应用程序的上层通常只需要执行一些初始化,然后将控制权传递给 Qt 函式库。然后透过事件告诉程序用户的操作。
在每个使用 Qt 的 GUI 应用程序,必须有一个确实的Qt::Application物件。Qt::Application管理各种应用程序的资源,如默认字体和光标(cursor)。
Qt::PushButton 是一个 GUI push 按钮,用户可以按下和放开。它管理自己的外观和感觉,就像所有其他的Qt::Widget。widget 是一个用户界面对象,可以处理用户的输入和绘制图形。程序设计师可以改变整体外观和感觉以及它的一些小型属性(如颜色),以及 widget 的内容。Qt::PushButton可以显示文字或Qt::Icon 。
一行一行的浏览
require 'Qt4'
此行载入 QtRuby 扩充。
app = Qt::Application.new(ARGV)
app 是程序的 Qt::Application 实例(instance)。它是在这里建立的。我们传递 ARGV 到 Qt::Application 建构子(constructor),使之能够处理某些标准的命令行参数(如 X11 的 -display)。所有 Qt 能识别的命令行参数将会从 ARGV 移除 。
注意: 最重要的是, Qt::Application 对象要在使用任何 Qt 的窗口系统组件之前建立。
hello = Qt::PushButton.new('Hello World!')
在Qt::Application 后,第一个出现的窗口系统程序代码:建立一个 push 按钮。
该按钮设定为显示文字「Hello world!」。因为我们没有指定父窗口(作为 Qt::PushButton 建构子的第二个参数),该按钮将有它自己的窗口、自己的窗框和标题栏。
hello.resize(100, 30)
该按钮设定为100像素(pixels)宽和30像素高(不包括窗框,它是由窗口系统提供的)。我们可以呼叫 Qt::Widget::move() 来指派 widget 在特定的屏幕位置,不过这里我们让窗口系统选择位置。
hello.show()
当您建立 widget 时,它是不可见的。您必须呼叫QQt::Widget::show() 使其可见。
app.exec()
这里是我们的程序将控制权传递到 Qt 的地方。Qt::CoreApplication::exec() 会在应用程序结束时返回。(Qt::CoreApplication 是 Qt::Application的基础类别。它实现Qt::Application 的核心,非GUI 功能,并且可用于开发非 GUI 应用程序。)
在Qt::CoreApplication::exec(),Qt 接收和处理用户和系统事件,并传递这些到适当的 widget。
你现在应该尝试执行该程序。
执行应用程序
当您执行应用程序,您会看到一个放着单一按钮的小窗口。在按钮上您可以读到那句名言:「Hello world!」
练习
尝试调整窗口大小。按下按钮。如果您正在执行 X11,尝试加入 -geometry 选项来执行程序(例如,-geometry 100x200+10+20)。