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

    From KDE TechBase
    m (Text replace - "<code ruby>" to "<syntaxhighlight lang="ruby">")
     
    (One intermediate revision by one other user not shown)
    Line 35: Line 35:
    quit.show()
    quit.show()
    app.exec()
    app.exec()
    </code>
    </syntaxhighlight>


    ===一行一行的浏览===
    ===一行一行的浏览===
    <syntaxhighlight lang="ruby">
    <syntaxhighlight lang="ruby">
    quit = Qt::PushButton.new('Quit')
    quit = Qt::PushButton.new('Quit')
    </code>
    </syntaxhighlight>


    这时,该按钮显示 <strong>Quit</strong>,而当用户按下按钮时,该程序便会如此执行。
    这时,该按钮显示 <strong>Quit</strong>,而当用户按下按钮时,该程序便会如此执行。
    Line 46: Line 46:
    <syntaxhighlight lang="ruby">
    <syntaxhighlight lang="ruby">
    quit.resize(75, 30)
    quit.resize(75, 30)
    </code>
    </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 52: Line 52:
    <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))
    </code>
    </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 58: Line 58:
    <syntaxhighlight lang="ruby">
    <syntaxhighlight lang="ruby">
    Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()'))
    Qt::Object.connect(quit, SIGNAL('clicked()'), app, SLOT('quit()'))
    </code>
    </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>''' 函式搞混。

    Latest revision as of 15:38, 23 June 2013

    Template:I18n/Language Navigation Bar (zh CN)

    Template:TutorialBrowser (zh CN)

    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

    在这里,quitclicked() 讯号(signal)连接到 appquit() 槽(slot)。这样,当按下该按钮时,应用程序就会退出。

    讯号和槽文件详细说明了这个主题。

    执行应用程序

    当你运行这支程序时,您将看到一个比第1章更小的窗口,被一个更小的按钮填满。

    练习

    尝试调整窗口大小。按下按钮来关闭应用程序。

    是否有任何其他 Qt::PushButton 的信号可以连接到 quit? [提示:Qt::PushButton 继承了 Qt::AbstractButton 大部分功能。]