StupidBeauty
Read times:744Posted at:Tue Jan 21 18:50:17 2014
- no title specified

Qt®4的Ruby教程翻译:第2章:让它退出,Chapter 2: Calling it Quits

Screenshot: Calling it QuitsScreenshot: Calling it Quits


文件:

概述

1章里面已经创建了一个窗口,那么现在呢,我们做些修改,使得,当用户要求这个程序退出时,它就退出。

我们还会使用一个比默认字体更诱人的字体。

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中的一个静态函数。不要将它与伯克利套接字库中的connect()函数混淆了。

这里对connect()的这个调用在两个Qt 对象(直接或间接继承Qt::Object的那些对象)之间建立了一个单向连接。每个Qt对象都可以拥有信号(signals)(用于向外发送消息)和信号槽(slots)(用于接收外部消息)。所有的部件都是Qt对象,因为它们继承了Qt::Widget,而这个东西又继承了Qt::Object

这里,quit clicked()信号被连接到app quit()信号槽,所以,当用户点击这个按钮时,程序就退出了。

信号和信号槽文档中深入说明了这个主题。

运行程序

当妳运行这个程序时,妳会看到一个比第1章中还小的窗口,其中有一个比第1章中还小的按钮。

练习

尝试着改变这个窗口的大小。按那个按钮以关闭程序。

Qt::PushButton中,是否还有别的可连接到quit 信号槽的信号呢?[提示:Qt::PushButtonQt::AbstractButton继承得到了自身的大部分功能。]

[下一篇: 3章 ]

未知美人

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands