Qt快速入门第三版 3.3.1QFram类练习

此次练习相关文件叙述借鉴原书作者霍亚飞的叙述,在此声明并表示感谢


在Qt设计器中从部件列表里面拖入一个Frame到界面上,然后在右下方的属性栏中更改其frameShape为Box,frameShadow为Sunken,lineWidth为5,midLineWidth为10,在属性栏中设置部件的属性,这和在源码中使用代码实现是等效的.




,以上截图效果,在源码中实现的效果是一样的,直接在mywidget.cpp文件中的MyWidget构造函数里使用下面的代码来代替:

    ui->frame->setFrameShape(QFrame::Box);
    ui->frame->setFrameShadow(QFrame::Sunken);
    ui->frame->setLineWidth(5);
    ui->frame->setMidLineWidth(10);





在设计器中向界面中拖入一个Label,然后将其拖大点,并在属性栏中设置对其方式alignment的属性,水平的改为AlignHCenter,垂直的改为AlignVCenter,这样QLabel中的文本就会在正中间显示。font属性可以对字体进行设置,也可以通过代码进行设置,在mywidget.cpp文件中的构造函数添加

    QFont font;
    font.setFamily("华文行楷");
    font.setPointSize(20);
    font.setBold(true);
    font.setItalic(true);
    ui->label->setFont(font);






QLabel属性栏中的wordWrap属性可以实现文本的自动换行



如果文本过长时不想自动换行,而是在后面自动省略,那么可以使用QFontMetrics类,该类用来计算给定字符的字符或者字符串的大小,要使用QFontMeterics,则可以通过创建对象的方式,或者QWidget::fontMetrics()来返回当前部件字体的QFontMetics对象


QFontMetrics类的elidedText()函数用来进行文本省略

第一个参数用来指定要省略的文本;

第二个参数是省略模式,就是"..."省略号出现的位置,包括Qt::ElideLeft 出现在文本开头,Qt::ElideMiddle 出现在文本中间,Qt::ElideRight出现在文本末尾;

第三个参数是文本的长度,单位是像素,只要第一个参数指定的文本的长度超过了这个值,就会进行省略。




以上运行出错的原因就是:

ui->setupUi(this);放在mywidget.cpp文件中构造函数MyWdget中的最后一行



在MyWidget.cpp文件中分别添加以下代码:

#include <QPixmap>

ui->label->setPixmap(QPixmap("E:/logo.png"));
添加上面两句代码后,就可以显示G盘中的logo.png图片。
以上的运行效果截图和动态效果显示图一样,所以同一放在最后的截图显示.

QLabel中还可以显示gif动态图片,在mywidget.cpp文件中添加头文件
#include <QMovie>

然后在myWigget构造函数中继续添加代码:
QMovie *movie = new QMovie("E:/donghua.gif");
    ui->label->setMovie(movie);                  // 在标签中添加动画
    movie->start();


运行效果如下图所示:



不足之处还请大家指正


  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值