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

From KDE TechBase
(Created page with '{{Template:I18n/Language Navigation Bar_(zh_TW)|Development/Tutorials/Qt4 Ruby Tutorial/Chapter 3}} {{TutorialBrowser_(zh_TW)| series=[[Development/Tutorials/Qt4_Ruby_Tutorial_...')
 
No edit summary
Line 17: Line 17:


===概覽===
===概覽===
This example shows how to create parent and child widgets.
這個範例說明如何建立父(parent)widget 和子(child) widget。


We'll keep it simple and use just a single parent and a lone child.
我們將保持簡單性,只採用單一父 widget 和一個單獨的子 widget。


<code ruby>
<code ruby>
Line 43: Line 43:
</code>
</code>


Here we simply create a plain widget object. The [http://doc.qt.nokia.com/latest/qwidget.html Qt::Widget] class is the base class of all user interface objects. The widget is the atom of the user interface: It receives mouse, keyboard and other events from the window system, and paints a representation of itself on the screen. A widget is clipped by its parent and by the widgets in front of it.
在這裡,我們簡單地建立一個空白的 widget 物件。[http://doc.qt.nokia.com/latest/qwidget.html Qt::Widget] 類別是所有使用者界面物件的基礎類別。widget 是使用者界面物件的原子:它接收滑鼠、鍵盤和其他來自視窗系統的事件,並在螢幕上描繪自身代表。widget 會被其父 widget 和在它前面的 widget 修剪。


A widget that isn't embedded in a parent widget, like this particular widget, is called a window. Usually, windows have their own window frame and taskbar entry, provided by the window system. A widget without a parent widget is always an independent window. Its initial position on the screen is controlled by the window system.
一個沒有嵌入在父 widget 的 widget,像這樣的特殊 widget,被稱為視窗(window)。通常視窗會有視窗系統提供的外框和工作列(taskbar)項目。沒有父 widget widget 就是一個獨立的視窗。其在螢幕上的初始位置是視窗系統所控制。


<code ruby>
<code ruby>
Line 51: Line 51:
</code>
</code>


We set the window's width to 200 pixels and its height to 120 pixels.
我們設定視窗的寬為200像素,高為120像素。


<code ruby>
<code ruby>

Revision as of 04:32, 1 January 2010

Template:I18n/Language Navigation Bar (zh TW)

Template:TutorialBrowser (zh TW)

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)

A child is born. This Qt::PushButton is created with a parent widget (window). A child widget is always displayed within its parent's area. When displayed, it is clipped by its parent's bounds. By default, it is rooted at the top-left corner of its parent, at position (0, 0).

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

The Qt::Widget::setGeometry() function takes four arguments: The first two arguments are the x and y coordinates of the button's top-left corner. The coordinates are relative to the parent widget. The last two arguments are the button's width and height. The result is a button that extends from position (10, 40) to position (190, 80).

window.show()

When a parent widget is shown, it will call show for all its children (except those that were explicitly hidden using Qt::Widget::hide()).

執行應用程式

The button no longer fills the entire window. Instead, it stays at position (10, 40) within the window and with a size of (180, 40), because of the Qt::Widget::setGeometry() call.

練習

Try resizing the window. How does the button change? What happens to the button's height if you run the program with a bigger font? What happens if you try to make the window really small?