QT4.4参考文档翻译之教程3-家族数值

Qt教程3-家族数值

文件:

 

这个例子演示了如何创建一个父窗口部件和子窗口部件。

 

我们将会保持这个程序的简单性,并且只使用一个单一的父窗口部件和一个独立的子窗口部件。

#include <QApplication>

 #include <QFont>

 #include <QPushButton>

 #include <QWidget>

 

 int main(int argc, char *argv[])

 {

     QApplication app(argc, argv);

 

     QWidget window;

     window.resize(200, 120);

 

     QPushButton quit("Quit", &window);

     quit.setFont(QFont("Times", 18, QFont::Bold));

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

     QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));

 

     window.show();

     return app.exec();

 }

 

一行一行地品读

 

# include <QWidget>

 

我们添加一个包含<QWidget>来获得我们所要使用的基本窗口部件类。

 

      QWidget window;

 

这里我们简单地创建了一个简易的窗口部件对象。QWidget类是所有用户界面对象的基类。窗口部件则是用户界面的原子:它接收来自鼠标、键盘以及其他视窗系统的事件,并将其表示在屏幕上。一个窗口部件被它的父窗口部件和它前面的窗口部件所截断(clipped

 

一个没有嵌入到父窗口部件的窗口部件,就像这个单独的窗口部件,被成为一个窗口。通常,窗口有它们自己的边框和任务栏,由视窗系统提供。一个没有父窗口部件的窗口部件经常是一个独立的窗口。它在屏幕中的起始位置有视窗系统控制。

 

      window.resize(200, 120);

我们设置这个窗口的宽度为200像素,高度为120像素。

      QPushButton quit("Quit", &window);

一个子窗口部件产生了。这个QPushButton由一个父窗口部件(窗口)创建。一个子窗口部件总是显示于它的父窗口部件的区域内。当它被显示的时候,它被父窗口部件的边界挡住了一部分。它被默认的固定于其父窗口部件的左上角,位于(0,0)坐标处。

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

 

函数QWidget::setGeometry()取四个参数:前两个为按钮左上角坐标对应的xy,此坐标相对于父窗口部件;后两个参数为按钮的宽和高。结果是一个从坐标(10,40)延伸至(190,80)的一个按钮。

 

      window.show();

当父窗口部件被显示的时候,它会调用所有子窗口部件的显示函数(除非在这些子窗口部件中你已经明确地使用QWidget::hide()来隐藏)。

留心事件的顺序

 

学习了QObject的读者,可以回想到当一个QObject的析构函数被调用时,如果这个QObject还有“子”,它的析构函数将自动调用每个“子”的析构。因此可能出现QPushButton退出的析构函数在主函数末尾被调用两次,一次是当它的父窗口部件——窗口,被析构后析构函数删除“退出”按钮因为它是一个“子”第二次是当“退出”按钮本身退出时。但是没有必要担心这种情况,这个代码是正确的。然而,有一种情况我们必须留意栈中的对象被析构的顺序。关于解释,请参看这篇note on the order of construction/destruction of QObjects(《注意Qobject创建/析构的顺序》)。

 

运行该程序

 

按钮不再充满整个窗口。取而代之的是,它停留在坐标(10,40)处并且内部大小为(18040),因为QWidget::setGeometry()的调用。

 

练习

 

试着改变窗口的大小。如何改变按钮的大小呢?当你用稍大一点的字体来运行这个程序,按钮的宽度发生了什么变化?如果你试着让窗口足够小又会发生什么呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值