
Screenshot: Hello World!
文件:
•. t1.rb
第一个程序是一个简单的“世界妳好”示例。妳只包含一些能让妳构建出一个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就会通过事件来向程序告之用户做了哪些操作。
在每个使用Qt 的图形界面程序中,都必须有且仅有一个 Qt::Application 对象。 Qt::Application管理者各种程序级别的资源,例如默认字体及鼠标光标。
Qt::PushButton是一个图形界面的按钮,用户可以按下然后放开它。它就像任何一个其它的 Qt::Widget 一样,管理着自己的观感。一个部件(widget)就是一个用户界面对象,它可以处理用户输入并且绘制图形外观。程序猿可以改变整体的观感,也可以改变狠多细节上的属性(例如颜色),还可以改变它的内容。一个 Qt::PushButton既可以显示文字也可以显示一个Qt::Icon 。
require 'Qt4'
这行代码载入QtRuby这个扩展。
app = Qt::Application.new(ARGV)
app即为这个程序的Qt::Application实例。它是在此处创建的。我们将 ARGV参数传递给Qt::Application构造函数,这样它就可以处理特定的标准命令行参数(例如X11 中的 -display )。所有被Qt 所识别的命令行参数都会从 ARGV 中删除。
注意 : 在使用 Qt 中的任何一个窗口系统部件之前,必须先创建 Qt::Application 对象。
hello = Qt::PushButton.new('Hello World!')
此处,在创建 Qt::Application 之后,出现了第一处与窗口系统相关的代码:创建了一个按钮。
这个按钮被设置为显示文字"Hello world!"。因为我们没有指定一个亲代窗口(那是由 Qt::PushButton 构造函数的第二个参数指定的),所以这个按钮自身会成为一个窗口,会拥有自身的窗口边框及标题栏。
hello.resize(100, 30)
这个按钮被设置为100像素宽,30像素高(窗口边框不计算在内,窗口边框是由窗口系统管理的)。我们可以调用 Qt::Widget::move()来给这个部件赋予一个特定的屏幕位置,不过这次我们不这么做,而是让窗口系统来选择合适的位置。
hello.show()
当妳创建一个部件时,它是不可见的。妳必须调用 Qt::Widget::show()来让它可见。
app.exec()
这就是我们将控制权移交给 Qt 的地方。当程序退出时, Qt::CoreApplication::exec()会返回。(Qt::CoreApplication是Qt::Application的基类。它实现了 Qt::Application中的核心、非图形界面功能,可用来开发非图形界面的程序。)
在Qt::CoreApplication::exec() ,中Qt从用户及系统接收及处理事件,并且将各个事件传递给相关的部件。
妳现在应当试试运行这个程序。
当妳运行这个程序的时候,妳会看到一个含有一个按钮的小窗口,而在那个按钮上妳能够看到那句烩炙人口的话:"Hello world!"
尝试着改变那个窗口的大小。单击那个按钮。如果妳是在X11中运行那个程序的,那么就试试带上 -geometry参数 (例如,-geometry 100x200+10+20)。
[下一篇:Chapter 2]
未知美人
未知美人
HxLauncher: Launch Android applications by voice commands