最近在工作中经常遇到了一个问题就是把把文件夹中的图片全部以缩略图的形式显示出来,刚开始的时候一头雾水,不知道怎么办,经过在网上查资料,发现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卡中的图片全部以缩略图的形式显示了出来。

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

  1. 3种终极方法,彻底解决CDR不显示缩略图!

    站长所在的印刷出版行业,一般都是使用版本较低的CDR软件,以便更好的兼容出版厂,不然新版本的文件发厂出片时却打不开,而转低版本的话又容易出错.从最开始的 CorelDRAW 9 到现在的 CORELD ...

  2. CountUp.js – 让数字以非常有趣的动画方式显示

    CountUp.js 无依赖的.轻量级的 JavaScript 类,可以用来快速创建以一种更有趣的动画方式显示数值数据.尽管它的名字叫 countUp,但其实可以在两个方向进行变化,这是根据你传递的 ...

  3. Scroll View 控件以Thumbnail的方式显示一个目录的全部图片,相似图片浏览器

    MAC : XCode -> Scroll View 控件以Thumbnail的方式显示一个目录的全部图片,类似图片浏览器 STEP1:将两个目录复制到project里面ImageBrowser ...

  4. jquery.validate 以alert方式显示错误方法

    $.validator.setDefaults({ submitHandler: function() { alert("submitted!");return false; } ...

  5. 一个Android上的以滑动揭示的方式显示并切换图片的View

    SlideView是一个Android上的以滑动揭示的方式显示并切换图片的View,以视觉对比的方式把一套相似的图片展示出来. 示例 翻页图片揭示效果: 特性 设置一组(List<ImageIn ...

  6. 判断当前viewcontroller是push还是present的方式显示的

    网上的姿势,反正我用着不管用 最正确的姿势 NSArray *viewcontrollers = self.navigationController.viewControllers; if (view ...

  7. 设置Nginx以列表方式显示网站内容

    服务器目录内容: 访问该页面时,将所有文件和目录按列表方式显示 nginx配置文件

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

    用这个方法就可以很方便快捷的实现上传图片并显示缩略图的效果: FileReader 的 readAsDataURL() 先创建一个img标签,再用 fileReader 把input文件的赋值到img ...

  9. 使用 Sixel 图形格式在终端中显示缩略图

    不久前,我们讨论了 Fim,这是一个轻量级的命令行图像查看器应用程序,用于从命令行显示各种类型的图像,如 bmp.gif.jpeg 和 png 等.今天,我偶然发现了一个名为 lsix的类似工具.它类 ...

随机推荐

  1. Difference between <? super T> and <? extends T> in Java

    stackoverflow 原文 [http://stackoverflow.com/questions/4343202/difference-between-super-t-and-extends- ...

  2. Eclipse中设置编码的方式

    如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,Eclipse工 作空间(workspace)的缺省字符编码是操作系统缺省的编码, ...

  3. 魔方公式xyz

    x:(整个魔方以R的方向转动),x':(整个魔方以R'的方向转动)  y:(整个魔方以U的方向转动),y':(整个魔方以U'的方向转动)  z:(整个魔方以F的方向转动),z':(整个魔方以F'的方向 ...

  4. redis安装过程中遇到的问题

    正常的 wget http://download.redis.io/releases/redis-3.0.7.tar.gz下载 解压缩 tar -zxvf redis-3.0.7.tar.gz cd ...

  5. 【转】NSHashtable and NSMaptable

    本文转自Nidom的博客,原文:<NSHashtable & NSMaptable>   NSSet, NSDictionary, NSArray是Foundation框架关于集合 ...

  6. 配置Samba服务

    1. samba服务用在什么地方?samba服务用于把Linux服务器上的文件或者打印接共享给windows或者Linux.2. 在samba服务的配置文件中,[global]配置部分的securit ...

  7. OpenSuse下编译MonoDevelop

    当访问Monodevelop.com官网下载的安装包,安装后,发现并不是最新版.在OpenSuse下载的是3.0版本.根据官网的指示,可以自己下载源码进行编译.按官网的指引: 1. $ git clo ...

  8. 在MVC中如何愉快使用Ajax

    前言: 这个故事要从我老大与客户谈需求开始说起.前几天,遇见一个逗比客户,不知道是听了哪个逗比程序员的临终遗言...让我们给他做一个手机端的Web应用出来,还说要使用MVC来做(不是App).马币,客 ...

  9. MVC校验特性

    1.前端引入3个脚本       ①jq脚本   ②jQuery.Validate.js  ③jquery.validate.unobtrusive.js(异步验证) 2.后端加特性 在表对应的Mod ...

  10. 阿里大鱼simplexmlelement object 取值PHP

    SimpleXMLElement Object(    [code] => 15    [msg] => Remote service error    [sub_code] => ...