Qt-QLabel 添加图片并设置 GIF 图动态效果
一、添加图片资源并设置图片
选择标签,拖拉到界面上,然后选择器属性 picmap
选择设置,在这里添加图片资源
点击左边的加号符号按钮添加前缀,并设置前缀名,如果已经添加过的前缀,可以直接点击中间的符号选择图片添加图片资源,不需要的资源可以点击右边的删除按钮删除
资源设置成功后,我们点击该图片资源,然后为 QLabel 控件 picmap 属性设置图片,最终效果如下:
代码中我们可以调用 setPixmap(QPixmap) 方法来为 QLabel 控件设置图片,对于图片资源的路径,我们可以直接点击 资源浏览器 → 选中对应的图片 → 右键点击复制路径,也可以直接根据自己图片放的位置使用绝对或相对路径。
ui.label_2->setPixmap(QPixmap(QString(":/QLabel_pmx/resource/test.gif")));
这里我们会发现,我们明明为 QLabel 控件指定的 GIF 图片,但是它却是静止的,如果要设置动态效果,可以通过 QMovie 类来设置。
二、设置 GIF 动态效果
QMovie:用于播放具有QImageReader的动画
isValid() 检验图像数据是否有效
start() 开始运行动态效果
调用 QMovie需要添加头文件 QMovie,QLabel 使用 setMovie 方法调用 QMovie 对象来显示动态效果
具体代码如下:
QLabel* qLabel = new QLabel(this);//指定其父类,在其父类中显示
//设置位置
qLabel->setGeometry(0, 0, 500, 500);
//设置背景色
qLabel->setStyleSheet("background-color:rgb(0, 0, 255)");
//添加动态图
QMovie* qMovie = new QMovie("bxg.gif");
if (qMovie->isValid()) {
//使用 setMovie
qLabel->setMovie(qMovie);
qMovie->start();//启动动画
}
效果如下:
对于 QLabel 由于它是继承 QWidget 的,所以其也可以单独作为一个界面输出,需要调用其 show() 函数
QLabel* label_custom = new QLabel();//单独界面,不需要指定显示在对应父类上
//设置其样式表
label_custom->setStyleSheet("background-color : rgb(0, 0, 255)");
//设置动态图
QMovie* mov = new QMovie("test.gif");
label_custom->setMovie(mov);//这里需要使用指针,不然被出了函数资源就没了
mov->start();//开启动画效果
label_custom->show();//如果单独显示,show()这里必须调用