此次练习相关文件叙述借鉴原书作者霍亚飞的叙述,在此声明并表示感谢
在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();
运行效果如下图所示:
不足之处还请大家指正