QListWidget方式显示缩略图

最近在工作中经常遇到了一个问题就是把把文件夹中的图片全部以缩略图的形式显示出来,刚开始的时候一头雾水,不知道怎么办,经过在网上查资料,发现QListWidget控件可以实现图片的缩略图显示,但是不知道怎么利用这个控件实现这个功能,网上有很多例子,但是在windows系统上用Qt编译这些程序以后却得不到理想的效果,虽然也可以让这些图片以缩略图的形式显示,但是都必须把这些图片做成资源文件,这和平时的开发中把很多即时的图片以缩略图的形式显示完全不同。所以找了好几天资料,最终解决了这个问题,下面是实现缩略图显示的主要代码,只需要把这些代码放入槽函数中就可以实现全部图片以缩略图的形式显示。

代码如下:

QString filePath    =   tr("/media/sd/PICTURES");
QListWidget *listWidget_File = new QListWidget(this);
listWidget_File->setObjectName(QString::fromUtf8("listWidget_File"));
listWidget_File->setGeometry(QRect(0, 0, 0, 0));

QDirIterator m_DirIterator(QString("/media/sd/PICTURES"),QDir::Files|QDir::NoSymLinks,QDirIterator::Subdirectories);

listWidget_File->clear();//保证每次进入listWidget_File的时候都会是空的

while (m_DirIterator.hasNext())

{
      QString tempFile=m_DirIterator.next();

listWidget_File->setIconSize(QSize(100, 100));        //设置QListWidget中的单元项的图片大小
      listWidget_File->setResizeMode(QListView::Adjust);
      listWidget_File->setViewMode(QListView::IconMode);   //设置QListWidget的显示模式
      listWidget_File->setMovement(QListView::Static);    //设置QListWidget中的单元项不可被拖动
      listWidget_File->setSpacing(10);                   //设置QListWidget中的单元项的间距

QPixmap objPixmap(tempFile);                      //生成图像objPixmap
                                                       //tempfile当中的/media/sd/PICTURES字符串删去,并返回剩余部分
      tempFile=tempFile.remove(QString("/media/sd/PICTURES"), Qt::CaseSensitive);

//生成QListWidgetItem对象

QListWidgetItem *pItem = new QListWidgetItem(QIcon(objPixmap.scaled(QSize(100,100))),tempFile);

pItem->setSizeHint(QSize(100,120));            //设置单元项的宽度和高度

listWidget_File->addItem(pItem);              //添加QListWidgetItem项
 }

listWidget_File->setGeometry(NULL,NULL,480,272);

此段代码我在嵌入式版本的QT中运行成功,并在嵌入式设备中达到预期的目标,Sd卡中的图片全部以缩略图的形式显示了出来。

时间: 2024-11-09 19:58:35

QListWidget方式显示缩略图的相关文章

第六篇:在SOUI中用九宫格拉伸方式显示一个图片资源

SOUI的初学者刚开始可能难以搞清楚在SOUI中显示一个图片资源的流程,这里做一个简单的示范. 首先我们准备好一张图,以下图为例. 第一步,我们首先把这个图片文件复制到demo的uires目录下,新建一个目录jpg,下面只有这一个文件9.jpg 第二步,我们需要在uires.idx中引入该图片资源 <jpg> <file name="girl" path="jpg\9.jpg"/> </jpg> 我们给这个资源命名为"g

MVC图片上传并显示缩略图

前面已经说了怎么通过MVC来上传文件,那么这次就说说如何上传图片然后显示缩略图,这个的实用性还是比较大.用UpLoad文件夹来保存上传的图片,而Temp文件夹来保存缩略图,前面文件上传部分就不再重复了,不过图片上传当然只能是图片格式的文件,因此在之前那篇博客中 通过控制格式的上传便能防止恶意上传,这个是文件上传的教程链接:http://www.cnblogs.com/xmfdsh/p/3988868.html 对于数据库的设计的话就随便点: 于是用EF便自动生成了类如下: public part

Js实现input上传图片并显示缩略图

用这个方法就可以很方便快捷的实现上传图片并显示缩略图的效果: FileReader 的 readAsDataURL() 先创建一个img标签,再用 fileReader 把input文件的赋值到img的src即可 具体代码如下: function previewFile() { var preview = document.querySelector('img'); var file = document.querySelector('input[type=file]').files[0]; v

融云发送不显示缩略图解决方法

部分安卓手机在使用融云打包正式版后,发送图片不显示缩略图,解决方法如下: 1. 发送本地图片,rong.sendImageMessage的prepare,此时使用本地默认图片2. 发送中,显示图片发送百分比,利用监听3. 发送成功后,rong.getHistoryMessages 获取历史记录,参数:oldestMessageId : -1,count : 14. 根据返回值替换之前的默认图片src /** * 发送图片消息 * 周枫 * 2015.08.11 * @param {Object}

(转载)VB 查询Oracle中blob类型字段,并且把blob中的图片以流的方式显示在Image上

原文摘自:http://heisetoufa.iteye.com/blog/504068 '模块代码 Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long Private Declare Function OleLoadPicture Lib "olepro3

php 系统树形类,以树形方式显示

<?php/***系统树形类,以树形方式显示***/header("Content-type: text/html; charset=utf-8;");class TreeModel{    /**    *树形标识    */    public $icon = array('│','├','└');    public $nbsp = "   ";    /**    *树形的二维数组数据    */    public $arr = array();  

12864液晶并行方式显示

12864液晶使用的16*16点阵.128个字符(8*16点阵)及64*256点阵显示RAM(GDRAM).与外部CPU接口採用并行或串行两种控制方式. 在12864上显示0-9的随机数 第二行显示www.csdn.blog 第三行显示"求是07的博客" 第四行显示"欢迎光临" 下面是基本的代码 #include <reg52.h> #include <intrins.h> #include <stdlib.h> #define

Scroll View 控件以Thumbnail的方式显示一个文件夹的所有图片,类似图片浏览器

MAC : XCode -> Scroll View 控件以Thumbnail的方式显示一个文件夹的所有图片,类似图片浏览器 STEP1:将两个文件夹拷贝到工程里面ImageBrowserView和Utils,并且在工程里面建立对应组和导入文件 STEP2:将Quartz.framework 和QuartzCore.framework库 导入到工程里面,这两个库是系统库 STEP3:   找到控件Scroll View 控件,上面写着"Scroll View"拖入到工程里面,然后

JavaScript DOM操作案例点击按钮通过类样式的方式显示跟隐藏div

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> div { width: 300px; height: 300px; background-color: pink; } .cls { display: none; } </style> </h