QT显示图片的四种方法

2023-10-30

QT显示图片的四种方法
原文地址:https://blog.csdn.net/flowerspring/article/details/113307194

1、Qt:设置背景图片的三种方式(setAutoFillBackground)----http://blog.csdn.net/liuligui5200/article/details/47612403

2、Qt中为按钮添加图片的几种方法----http://blog.csdn.net/SZ_Silence06/article/details/51077992

QT显示图片的方法有很多

大致为

label上显示

直接画出来

容器显示

1---------------显示gif图片(label上显示)

http://archive.cnblogs.com/a/2053701/

在QT中要显示GIF图片,不能通过单单的添加部件来完成.

还需要手动的编写程序.

工具:QT Creator

新建一个工程,我们先在designer中,添加一个QLabel部件.

如下图:

将QLabel拉成适当大小.

在类cpp函数中添加如下程序:

复制代码

复制代码

#include “widget.h”
#include “ui_widget.h”
#include
#include

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QMovie *movie =new QMovie(“D:/Project/Qt/testclass/2.gif”);
ui->label->setMovie(movie);
movie->start();
}

Widget::~Widget()
{
delete ui;
}

复制代码

复制代码

如下图:

这里要注意QMovie中的路径名:“D:/Project/Qt/testclass/2.gif” 这里的路径斜杠和WINDOWS下是相反的.WINDOWS下默认是反斜杠.

编译,运行就没有问题,就会看到GIF文件在播放了.

如下图:

当文档GIF图片显示:

复制代码

复制代码

#include <QtGui/QApplication>
#include
#include

int main(int argc,char*argv[])
{
QApplication app(argc,argv);

QLabel *label =new QLabel();
QMovie *movie =new QMovie(“D:/Project/Qt/firstQT/2.gif”);
label->setMovie(movie);
movie->start();
label->show();

return app.exec();
}

复制代码

复制代码

2-------------------------label上显示图片------------------

把你的label.png放到工程目录顶层,直接
QPixmap pixmap(“label.png”);

ui->title_label->setPixmap(pixmap);

ui->title_label->show();


可以直接:
label->setPixmap(QPixmap(“./pic.jpg”));

或者:
QImage *image= new QImage(“./pic.jpg”);
label->setPixmap(QPixmap::fromImage(image));

再或者在中途换某个图像的话:
QImage *image= new QImage(“./pic1.jpg”);
label->setPixmap(QPixmap::fromImage(image));

image->load(“./pic2.jpg”);

3----------直接画出图片-------------------------

voidlogindlg::paintEvent(QPaintEvent*)

{

QPainterpainter(this);

QPixmappix;

pix.load(“D:/QT/login/login/images/delta.png”);

painter.drawPixmap(0,0,100,33,pix);

//painter.drawLine(0,0,100,100);

}

4-----------程序启动时的图片

QApplication app(argc, argv);
QSplashScreen *splash = new QSplashScreen;
splash->setPixmap(QPixmap(“:/images/splash.png”));//设置图片
splash->show();//显示图片
Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop;
splash->showMessage(QObject::tr(“Setting up the main window…”),topRight, Qt::white);//显示信息
MainWindow mainWin;
splash->showMessage(QObject::tr(“Loading modules…”),
topRight, Qt::white); //显示信息
loadModules();
splash->showMessage(QObject::tr(“Establishing connections…”),
topRight, Qt::white); //显示信息
establishConnections();
mainWin.show();
splash->finish(&mainWin);//图片一直显示到mainWin加载完成
delete splash;//释放空间,节省内存
return app.exec();

来自: http://hi.baidu.com/sdink/blog/item/879e7013027a7fcaa7ef3f83.html

首先你得加载一张能显示透明的图片,jpg格式肯定是不行的,一般都是png
还有不同的部件加载图片的方法也不太相同,比如:
QLabel加载图片:
C/C++ code
QString strPath=imagePath.value(day); //图片路径
QPixmap pix(strPath);
dayLabel->setPixmap(pix);

QPushButton加载图片:
C/C++ code
button->setIcon(QIcon(“toolbutton.png”));
button->setIconSize(QSize(48, 48));

其中setIconSize函数是用来截取图片的显示区域,如果没有该函数,该图片是被缩放的放到图片上
用调色板加载图片:
C/C++ code
QPalette p = palette();
p.setBrush(QPalette::Button, QBrush(QPixmap(“toolbutton.png”)));
setPalette§;

另外实现按钮的透明:
C/C++ code
button->setFlat(true);

还有就是用绘制事件函数了:
C/C++ code
QPixmap arrayImage(“/home/image/array.png”); //图片路径
QRect arrayRect(0,0,50,50); //截取图片区域
QPainter painter;
painter.drawPixmap(QPoint(100,100),arrayImage,arrayRect); //打印图片

//=============================================================================================================================

备注::

1>这里要注意QMovie中的路径名:“D:/Project/Qt/testclass/2.gif” 这里的路径斜杠和WINDOWS下是相反的.WINDOWS下默认是反斜杠.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT显示图片的四种方法 的相关文章

随机推荐

  • SSRF中利用到的协议

    一dict协议 定义 词典网络协议 在RFC 2009中进行描述 他的目标是超越Webster protocol 并允许客户端在使用过程中访问更多字典 Dict服务器和客户机使用TCP端口2628 dict协议在ssrf中的利用 dict协
  • 10000+ppt免费下载领取(python爬取全站ppt)

    1 缘由 前几天参加一个活动 需要制作ppt 制作完之后ppt模板死活不能让人满意 然后就去网上找模板 有些比较适合ppt模板还是收费的 这 有点恶心 哈哈哈 今天教大家如何使用python爬虫爬取1万份 ppt模板 以后制作ppt再也不怕
  • 区块链技术六大算法

    拜占庭协定 拜占庭的故事大概是这么说的 拜占庭帝国拥有巨大的财富 周围10个邻邦垂诞已久 但拜占庭高墙耸立 固若金汤 没有一个单独的邻邦能够成功入侵 任何单个邻邦入侵的都会失败 同时也有可能自身被其他9个邻邦入侵 拜占庭帝国防御能力如此之强
  • 无符号16位整形数组转float---Java

    代码 public float int16tofloat int a if 0 a length 2 a length lt 0 return null int len a length 2 float c new float len fo
  • java技术可行性分析_Java可行性分析

    Java 信息管理系统可行性研究报告 一 可行性研究前提 1 1 可行性研究背景及意义 利用计算机进行学生信息管理 不仅能够保证准确 无误 快速输出 而且 还可以利用计算机对有关信息进行查询 检索迅速 查找方便 可靠性高 存储 量大 保密性
  • java 清除字符串空格

    JAVA中去掉空格 1 String trim trim 是去掉首尾空格 2 str replace 去掉所有空格 包括首尾 中间 String str hell o String str2 str replaceAll System ou
  • 当代年轻人,为什么越来越穷?

    作者 啡小沫 来源 ID feixiaomo6 1 这个问题 在网上被浏览了400多万次 不吹不黑 我们先来看一组数据 知乎大V 经济学博弈论话题优秀回答者Manolo列举了Raj Chetty等六位研究者2017年发表在Science上的
  • Item 48:了解模板元编程

    Item 48 Be aware of template metaprogramming 模板元编程 Template Metaprogramming TMP 就是利用模板来编写那些在编译时运行的C 程序 模板元程序 Template Me
  • java 校验某对象是否存在某属性

    java 校验某对象是否存在某属性 String name username if StrKit isEmpty type JsonResult error 参数不能为空 Class class1 User class Field fiel
  • 《Attention Is All You Need》论文笔记 - 【transformer模型】

    论文来源 NeurIPS 2017 论文链接 点击进入 该篇论文提出了一个新颖的网络结构 Transformer 其没有使用循环递归结构和卷积结构 仅基于注意力机制 在两个机器任务上表明了模型能够更好的并行化计算 可以显著地减少训练时间 性
  • 大数据可视化课程笔记 1

    文章目录 第一章 数据可视化概述 1 1 什么是数据可视化 1 2 数据可视化的作用 1 3 数据可视化的分类 1 4 数据可视化的发展历史 1 5 数据可视化的未来 第一章 数据可视化概述 1 1 什么是数据可视化 数据可视化定义 将抽象
  • 【笔记】LaTex常见问题汇总(四)

    1 Texstudio显示编辑器代码行号 参考 https jingyan baidu com article f79b7cb339bbec9144023e84 html 2 Latex出现Unable to open xxxxx pdf
  • 1399: 最小生成树

    题目描述 最小生成树问题是实际生产生活中十分重要的一类问题 假设需要在n个城市之间建立通信联络网 则连通n个城市只需要n 1条线路 这时 自然需要考虑这样一个问题 即如何在最节省经费的前提下建立这个通信网 可以用连通网来表示n个城市以及n个
  • C# Study

    直接使用 t 和 n类似 字符串中文件路径的写法 3 当字符串中需要大量修改时 用StringBuilder更好 运行时间更短 4 Console ReadLine 读进来的默认是字符串string 5 C 严格区分大小写 Main需要大写
  • 蓝桥杯单片机第七届国赛笔记

    蓝桥杯单片机第七届国赛笔记 做完这届题目之后有很多感触和一些好的思想 想分享一下顺便巩固巩固 1 摆脱标志位的依赖 好的编程我认为是用最简洁 清晰的程序 最近的路径 去实现某个功能 如果遇到问题就做标志位这种方法我认为有点low了 对思维和
  • golang语言_2

    init函数 每一个源文件都可以包含一个 init 函数 该函数会在 main 函数执行前 被 Go 运行框架调用 也 就是说 init 会在 main 函数前被调用 可以做初始化操作 func init fmt Println 123 f
  • 【Python算法系列十一】二叉树的3种遍历方式

    二叉树的遍历是指从根结点出发 按照某种次序依次访问二叉树中所有结点 使得每个结点被访问一次且仅被访问一次 遍历二叉树的方法主要分 3 种 先序遍历 中序遍历和后序遍历 先序遍历指最先遍历节点本身 再遍历节点的左子树 最后遍历右子树的遍历方法
  • (一)esp8266透传简单使用

    最近闲的在捣鼓wifi 以太网连接网 不过好像没有那么多时间去研究cc3200 先从封装好的芯片模块开始玩起吧 这几天准备研究下ESP8266 由于手头上是有一个透传的模块 和一个块STM32F4的板子 而且有对应的代码例程 所以先开始研究
  • 华为OD机试 - 服务失效判断(Java)

    题目描述 某系统中有众多服务 每个服务用字符串 只包含字母和数字 长度 lt 10 唯一标识 服务间可能有依赖关系 如A依赖B 则当B故障时导致A也故障 依赖具有传递性 如A依赖B B依赖C 当C故障时导致B故障 也导致A故障 给出所有依赖
  • QT显示图片的四种方法

    QT显示图片的四种方法 原文地址 https blog csdn net flowerspring article details 113307194 1 Qt 设置背景图片的三种方式 setAutoFillBackground http