Archive:Development/Tutorials/Qt4 Ruby Tutorial/Chapter 2 (zh TW): Difference between revisions
Neverendingo (talk | contribs) m (Text replace - "<code ruby>" to "<syntaxhighlight lang="ruby">") |
Neverendingo (talk | contribs) m (Text replace - "</code>" to "</syntaxhighlight>") |
||
Line 34: | Line 34: | ||
quit.show() | quit.show() | ||
app.exec() | app.exec() | ||
</ | </syntaxhighlight> | ||
===一行一行的瀏覽=== | ===一行一行的瀏覽=== | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
quit = Qt::PushButton.new('Quit') | quit = Qt::PushButton.new('Quit') | ||
</ | </syntaxhighlight> | ||
這時,該按鈕顯示 <strong>Quit</strong>,而當使用者按下按鈕時,該程式便會如此執行。 | 這時,該按鈕顯示 <strong>Quit</strong>,而當使用者按下按鈕時,該程式便會如此執行。 | ||
Line 45: | Line 45: | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
quit.resize(75, 30) | quit.resize(75, 30) | ||
</ | </syntaxhighlight> | ||
我們選擇了另一種大小的按鈕,因為這次的文字有點短於「Hello world!」。我們也可以使用 [http://doc.qt.nokia.com/latest/qfontmetrics.html Qt::FontMetrics] 設定正確的大小,或讓 [http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] 自己選擇一個合理的預設大小。 | 我們選擇了另一種大小的按鈕,因為這次的文字有點短於「Hello world!」。我們也可以使用 [http://doc.qt.nokia.com/latest/qfontmetrics.html Qt::FontMetrics] 設定正確的大小,或讓 [http://doc.qt.nokia.com/latest/qpushbutton.html Qt::PushButton] 自己選擇一個合理的預設大小。 | ||
Line 51: | Line 51: | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold)) | quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold)) | ||
</ | </syntaxhighlight> | ||
在這裡,我們為按鈕選擇一個新的字體,Times 的18號粗體。使用 [http://doc.qt.nokia.com/latest/qapplication.html#setFont Qt::Application::setFont()],它也可以更改為整個應用程式的預設字體。 | 在這裡,我們為按鈕選擇一個新的字體,Times 的18號粗體。使用 [http://doc.qt.nokia.com/latest/qapplication.html#setFont Qt::Application::setFont()],它也可以更改為整個應用程式的預設字體。 | ||
Line 57: | Line 57: | ||
<syntaxhighlight lang="ruby"> | <syntaxhighlight lang="ruby"> | ||
Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()')) | Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()')) | ||
</ | </syntaxhighlight> | ||
[http://doc.qt.nokia.com/latest/qobject.html#connect Qt::Object::connect()] 大概是 Qt 最核心的特色。請注意,'''<tt>connect()</tt>''' 在這裡是 [http://doc.qt.nokia.com/latest/qobject.html Qt::Object] 中的一個靜態(static)函式 。不要把它和 Berkeley socket 函式庫的 '''<tt>connect()</tt>''' 函式搞混。 | [http://doc.qt.nokia.com/latest/qobject.html#connect Qt::Object::connect()] 大概是 Qt 最核心的特色。請注意,'''<tt>connect()</tt>''' 在這裡是 [http://doc.qt.nokia.com/latest/qobject.html Qt::Object] 中的一個靜態(static)函式 。不要把它和 Berkeley socket 函式庫的 '''<tt>connect()</tt>''' 函式搞混。 |
Revision as of 20:56, 29 June 2011
Template:I18n/Language Navigation Bar (zh TW)
Template:TutorialBrowser (zh TW)
Calling it Quits
檔案:
概覽
在第一章中,建立了一個視窗。現在我們繼續讓程式在使用者要求退出時,能正確地退出。
我們還將使用比預設字體更令人興奮的字體。
require 'Qt4'
app = Qt::Application.new(ARGV)
quit = Qt::PushButton.new('Quit')
quit.resize(75, 30)
quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()'))
quit.show()
app.exec()
一行一行的瀏覽
quit = Qt::PushButton.new('Quit')
這時,該按鈕顯示 Quit,而當使用者按下按鈕時,該程式便會如此執行。
quit.resize(75, 30)
我們選擇了另一種大小的按鈕,因為這次的文字有點短於「Hello world!」。我們也可以使用 Qt::FontMetrics 設定正確的大小,或讓 Qt::PushButton 自己選擇一個合理的預設大小。
quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
在這裡,我們為按鈕選擇一個新的字體,Times 的18號粗體。使用 Qt::Application::setFont(),它也可以更改為整個應用程式的預設字體。
Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()'))
Qt::Object::connect() 大概是 Qt 最核心的特色。請注意,connect() 在這裡是 Qt::Object 中的一個靜態(static)函式 。不要把它和 Berkeley socket 函式庫的 connect() 函式搞混。
這個 connect() 呼叫會在兩個 Qt 物件間(直接或間接繼承 Qt::Object 的物件)建立一個單向連接。每一個Qt 物件可以擁有 signals(發送訊息)和 slots (接收訊息)。所有的 widget 都是 Qt 物件,因為他們繼承 Qt::Widget,而 Qt::Widget 又繼承了 Qt::Object。
在這裡,quit 的 clicked() 訊號(signal)連接到 app 的 quit() 槽(slot)。這樣,當按下該按鈕時,應用程式就會退出。
訊號和槽文件詳細說明了這個主題。
執行應用程式
當你運行這支程式時,您將看到一個比第1章更小的視窗,被一個更小的按鈕填滿。
練習
嘗試調整視窗大小。按下按鈕來關閉應用程式。
是否有任何其他 Qt::PushButton 的信號可以連接到 quit? [提示:Qt::PushButton 繼承了 Qt::AbstractButton 大部分功能。]