
Screenshot: Family Values
文件:
•. t3.rb
这个示例演示了如何创建亲代及子代部件。
我们尽可能保持简单,只创建一个亲代部件和一个子代部件。
require 'Qt4'
app = Qt::Application.new(ARGV)
window = Qt::Widget.new()
window.resize(200, 120)
quit = Qt::PushButton.new('Quit', window)
quit.font = Qt::Font.new('Times', 18, Qt::Font::Bold)
quit.setGeometry(10, 40, 180, 40)
Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()'))
window.show()
app.exec()
window = Qt::Widget.new()
这里,我们简单地创建一个普通的部件对象。Qt::Widget类是所有用户界面对象的基类。部件是用户界面中的基本组成成分:它从窗口系统中接收鼠标、键盘和其它事件,并且在屏幕上绘制上一个代表自身的图形。一个部件会被它的亲代部件及位于它前面的部件裁剪。
一个没有嵌套到亲代部件里去的部件,例如这里的这个部件,就会被叫作一个窗口。通常情况下,窗口都拥有它们自己的窗口边框和任务栏条目,而这些东西是由窗口系统提供的。一个不具有亲代部件的部件一定会成为一个独立的窗口。它在屏幕上的初始位置是由窗口系统控制的。
window.resize(200, 120)
我们将这个窗口的宽度设置为200像素,高度设置为120像素。
quit = Qt::PushButton.new('Quit', window)
一个子代部件诞生了。在创建这个Qt::PushButton的时候指定了一个亲代部件(window)。一个子代部件一定会显示在它的亲代部件的可视区域里。当子代部件被显示时,会被它的亲代部件的可视区域裁剪。默认情况下,它会被放置在亲代部件的左上角,即为位置(0, 0)处。
quit.setGeometry(10, 40, 180, 40)
Qt::Widget::setGeometry()函数需要4个参数:前2个参数表示该按钮的左上角的x和y坐标。坐标是相对于亲代部件的坐标而言的。后面两个参数表示这个按钮的宽度和高度。以上所用的参数所产生的结果就是一个占有着(10, 40)到(190, 80)的区域的按钮。
window.show()
当一个亲代部件被显示时,它会调用所有子代部件的show函数(那些明确使用Qt::Widget::hide()隐藏起来的子代部件除外)。
现在这个按钮不是填满整个窗口了。而是被放置在窗口中的位置(10, 40)处,尺寸为(180, 40),原因就是我们调用了Qt::Widget::setGeometry()。
试着改变窗口的大小。按钮会怎么变化?如果妳给程序设置一个更大的字体的话,按钮的高度会发生什么变化?如果妳把窗口搞得非常小的话,又会怎么样?
未知美人
HxLauncher: Launch Android applications by voice commands