Qt入门

QLabel 的使用∶

现在我们再来看看 QLabel 的用法. 在 QT Designer 中, 用 Mouse 选择 Text Label,(就是那个
画了个『A』的图标.)然後用 Mouse 画出一个随便大小的 Text Label. 再用 Mouse 在这个 Label 上面 Double
Click 一下.将跳出的 Window 中的那个 TextLabel1 改成 My Label. 然後按 Save 保存文档. 用 uic 转成
.cpp 和 .h 文档.这使侯,我们发现,在 .h 文档中,多出了

class QLabel; //这里告诉程式,我们下面需要用到 QLabel
QLabel* TextLabel1; // 用 QLabel 生成 *TextLabel1


在 .cpp 中,我们则看到了多出下面这些东西.

#include //这就不用我多说了吧, include 进 qlabel.h 因为我们的 QLabel 需要
TextLabel1 = new QLabel( this, "TextLabel1" ); //定义 TextLabel1
TextLabel1->setGeometry( QRect( 130, 120, 171, 91 ) ); //设定 TextLabel 的位置
TextLabel1->setText( tr( "My Label" ) ); // 还既得我们输入的 My Label 吧.也就是给 TextLabel1 定的
//显示出来的东西.就是用 setText 在这里设定的.

现在我们把这些加入到我们前面写的那个程式中.将上面的东西加入到 form1.h 和 form1.cpp 中.
但是我们这里需要做一点小小的改变.就是把 TextLabel1 的位置远一下.放造屏幕的最左上角.

我门把:
TextLabel1->setGeometry( QRect( 130, 120, 171, 91 ) );
改换成:
TextLabel1->setGeometry( QRect( 0, 0, 171, 91 ) );

重新编译我们的程式.就会看到在程式窗口的最左上角,有一排文字的出现.文字就是我们的 TextLabel 中
定义的 "My Label".
现在回到我们的程式部份.在前面的 PushButton 中,我们给我们的 PushButton 定义了字型及字体.实际
上,字型及字体的定义.在 QT 中是通用的. 我们能够用相同的方法来定义 QLabel 的字体.我们现在在程式
中加入∶
QFont TextLabel1_font( TextLabel1->font() );
TextLabel1_font.setFamily( "adobe-courier" );
TextLabel1_font.setPointSize( 24 );
TextLabel1->setFont( TextLabel1_font );
这样我们就把这个 TextLabel改成了跟前面 PushButton 相同的字体 courier (adobe) 24 号字.

大家常常能看到 QT 中的 TextLabel 是用图片来显示的.实际上,这也很简单.我们在 QT Designer 中,
首先在我们刚刚生成的那个 TextLabel 上面用 Mouse Click 一下.把 Property Edit 的 Focus Set 到
我们得 TextLabel 上面. (假如您刚刚没有用 Mouse 在您的 QT Designer 上面乱按的话.那麽您的 Property
Edit 中的 Focus 应该本身就已在 TextLabel 上了)这时侯,我们在 Property Edit 中找一个叫做
pixmap 的东西.在 pixmap 後面的 『...』中按一下,就出现了一个新的让您还则图片的视窗. QT Designer 中
现在能够接受的图片格式为(这篇文章用的是 QT Designer 1.1)bpm, jpeg, pbm, pgm, png 和 ppm. 所以
大家随便找一个上面格式的图片.然後选择 OK.这时侯您就会发现那个 TextLabel 变成您选择的图片了. 也许
您会发现,图片并没有完全显示出来,而是只显示了一部分.(假如您选择的图片大过您的 TextLabel 的话)这
是很常见的.在 pixmap 底下,有一个 scaledContents 的选项.只要把选项後面的值改成 True 就好了.这时侯
您看到的就是个经过平衡收放过大小的图片了. 保存 (Save)起来.让我们来看看程式码这边是如何处理这
些图片的吧.
首先我们看到的是在 .cpp 的文档中,多出了:
#include
#include
这两个文档.这些都是处理图片时需要的.
後面也许大家就头大了.
static const char* const image0_data[] = {
xxxxx
xxxxx
xxxxx
xxxxx
......
...};
好长的一段.这些是什麽呢?看上去满复杂的.不用怀疑,这就是您放进去的那个图片.只但是这里是用
xpm 的格式来处存的.

什麽事 XPM 呢?
其实 XPM 是 XPixMap的简称. XPM 是 Linux 中 X11 的一种图像处存的方法.
在 XPM 中,图像被允许用 ASCII 文字模式来保存起来. 而 XPM 的另一个特性就是能够
直接被 C Compiler 所接受.也就是说您能够直接把 XPM 的图片编译到您的程式中.

把 XPM 直接编译到程式中有两个最大的好处:

第一点是程式本身假如有很多图片,用 XPM 全部编译进程式中.就避免了在发行程式得时侯,需要附带很
多图片的麻烦.
第二点就是「相对」来说,被编译进程式的图片,对於一般的普通使用者来说,要改起来会比较麻烦些.
当然,假如说您不准发行Open Source Code的程式.在没有 Source Code 的情况下.想要改您放放入的
图片,就更家困难了.

但是相对的,也有一些不便性∶
程式码本身会加大很多
图片的更改性不灵活

接下来,我们看到了下面的程式码∶

QPixmap image0( ( const char** ) image0_data ); /image0_data 就是前面那个 XPM 的图片啦
TextLabel1->setPixmap( image0 ); / 这里是告诉 TextLabel1 去使用并且显示 image0 (image0_date)
TextLabel1->setScaledContents( TRUE ); /打开自动平衡收放图片大小的功能.

QPixmap 本身其实就接受 xpm 档案. 所以我们能够不用把 XPM 的 Source 编译进程式中.而改用
QPixmap pixmap("image.xpm")的形式.当然,我们需要把图片文档转换成 XPM 的格式.这里我们用
到了 Linux 中本身为我们准备好的工具 convert. convert 本身支持很多的图片各式的转换.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值