Archive:Development/Tutorials/Qt4 Ruby Tutorial/Chapter 3 (zh CN): Difference between revisions

From KDE TechBase
No edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 21: Line 21:
我们将保持简单性,只采用单一父 widget 和一个单独的子 widget。
我们将保持简单性,只采用单一父 widget 和一个单独的子 widget。


<code ruby>
<syntaxhighlight lang="ruby">
require 'Qt4'
require 'Qt4'


Line 36: Line 36:
window.show()
window.show()
app.exec()
app.exec()
</code>
</syntaxhighlight>


===一行一行的浏览===
===一行一行的浏览===
<code ruby>
<syntaxhighlight lang="ruby">
window = Qt::Widget.new()
window = Qt::Widget.new()
</code>
</syntaxhighlight>


在这里,我们简单地建立一个空白的 widget 对象。[http://doc.qt.nokia.com/latest/qwidget.html Qt::Widget] 类别是所有用户界面对象的基础类别。widget 是用户界面对象的原子:它接收鼠标、键盘和其他来自窗口系统的事件,并在屏幕上描绘自身代表。widget 会被其父 widget 和在它前面的 widget 修剪。
在这里,我们简单地建立一个空白的 widget 对象。[http://doc.qt.nokia.com/latest/qwidget.html Qt::Widget] 类别是所有用户界面对象的基础类别。widget 是用户界面对象的原子:它接收鼠标、键盘和其他来自窗口系统的事件,并在屏幕上描绘自身代表。widget 会被其父 widget 和在它前面的 widget 修剪。
Line 47: Line 47:
一个没有嵌入在父 widget 的 widget,像这样的特殊 widget,被称为窗口(window)。通常窗口会有窗口系统提供的外框和任务栏(taskbar)项目。没有父 widget 的 widget 就是一个独立的窗口。其在屏幕上的初始位置是窗口系统所控制。
一个没有嵌入在父 widget 的 widget,像这样的特殊 widget,被称为窗口(window)。通常窗口会有窗口系统提供的外框和任务栏(taskbar)项目。没有父 widget 的 widget 就是一个独立的窗口。其在屏幕上的初始位置是窗口系统所控制。


<code ruby>
<syntaxhighlight lang="ruby">
window.resize(200, 120)
window.resize(200, 120)
</code>
</syntaxhighlight>


我们设定窗口的宽为200像素,高为120像素。
我们设定窗口的宽为200像素,高为120像素。


<code ruby>
<syntaxhighlight lang="ruby">
quit = Qt::PushButton.new('Quit', window)
quit = Qt::PushButton.new('Quit', window)
</code>
</syntaxhighlight>


子 widget 诞生。[http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] 建立并指定父 widget('''<tt>window</tt>''')。子 widget 总是显示在其父的区域里面。当显示时,它会被其父 widget 的边界裁剪。预设情况下,它会被放置在其父 widget 的左上角,在(0,0)的位置。
子 widget 诞生。[http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] 建立并指定父 widget('''<tt>window</tt>''')。子 widget 总是显示在其父的区域里面。当显示时,它会被其父 widget 的边界裁剪。预设情况下,它会被放置在其父 widget 的左上角,在(0,0)的位置。


<code ruby>
<syntaxhighlight lang="ruby">
quit.setGeometry(10, 40, 180, 40)
quit.setGeometry(10, 40, 180, 40)
</code>
</syntaxhighlight>


[http://doc.qt.nokia.com/latest/qwidget.html#setgeometry Qt::Widget::setGeometry()] 函式有四个参数:前两个参数是按钮左上角的x和y坐标。坐标是相对于父 widget。而后两个参数是按钮的宽度和高度。结果是按钮的范围从(10,40)到(190,80)。
[http://doc.qt.nokia.com/latest/qwidget.html#setgeometry Qt::Widget::setGeometry()] 函式有四个参数:前两个参数是按钮左上角的x和y坐标。坐标是相对于父 widget。而后两个参数是按钮的宽度和高度。结果是按钮的范围从(10,40)到(190,80)。


<code ruby>
<syntaxhighlight lang="ruby">
window.show()
window.show()
</code>
</syntaxhighlight>


当父 widget 显示时,它会呼叫显示其所有的子 widget(除了那些已明确使用[http://doc.qt.nokia.com/latest/qwidget.html#hide Qt::Widget::hide()] 隐藏的)。
当父 widget 显示时,它会呼叫显示其所有的子 widget(除了那些已明确使用[http://doc.qt.nokia.com/latest/qwidget.html#hide Qt::Widget::hide()] 隐藏的)。
Line 76: Line 76:
===练习===
===练习===
尝试调整窗口的大小。按钮有什么改变?如果你使用更大的字体执行该程序,按钮的高度会发生什么改变?如果你试图使窗口变得非常小,会发生什么事?
尝试调整窗口的大小。按钮有什么改变?如果你使用更大的字体执行该程序,按钮的高度会发生什么改变?如果你试图使窗口变得非常小,会发生什么事?
[[Category:Ruby]]

Latest revision as of 15:38, 23 June 2013

Template:I18n/Language Navigation Bar (zh CN)

Template:TutorialBrowser (zh CN)

Family Values

档案:

概览

这个范例说明如何建立父(parent)widget 和子(child) widget。

我们将保持简单性,只采用单一父 widget 和一个单独的子 widget。

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()

在这里,我们简单地建立一个空白的 widget 对象。Qt::Widget 类别是所有用户界面对象的基础类别。widget 是用户界面对象的原子:它接收鼠标、键盘和其他来自窗口系统的事件,并在屏幕上描绘自身代表。widget 会被其父 widget 和在它前面的 widget 修剪。

一个没有嵌入在父 widget 的 widget,像这样的特殊 widget,被称为窗口(window)。通常窗口会有窗口系统提供的外框和任务栏(taskbar)项目。没有父 widget 的 widget 就是一个独立的窗口。其在屏幕上的初始位置是窗口系统所控制。

window.resize(200, 120)

我们设定窗口的宽为200像素,高为120像素。

quit = Qt::PushButton.new('Quit', window)

子 widget 诞生。Qt::PushButton 建立并指定父 widget(window)。子 widget 总是显示在其父的区域里面。当显示时,它会被其父 widget 的边界裁剪。预设情况下,它会被放置在其父 widget 的左上角,在(0,0)的位置。

quit.setGeometry(10, 40, 180, 40)

Qt::Widget::setGeometry() 函式有四个参数:前两个参数是按钮左上角的x和y坐标。坐标是相对于父 widget。而后两个参数是按钮的宽度和高度。结果是按钮的范围从(10,40)到(190,80)。

window.show()

当父 widget 显示时,它会呼叫显示其所有的子 widget(除了那些已明确使用Qt::Widget::hide() 隐藏的)。

执行应用程序

该按钮不再填满整个窗口。相反地,因为 Qt::Widget::setGeometry() 呼叫,它留在窗口(10,40)的位置和以及(180,40)的大小。

练习

尝试调整窗口的大小。按钮有什么改变?如果你使用更大的字体执行该程序,按钮的高度会发生什么改变?如果你试图使窗口变得非常小,会发生什么事?