array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Qt QListWidget实现图片缩略图列表 - 爱码网

转载:v_xchen_v

目标:

将本机中的多张图片以缩略图的形式显示在列表中

环境:

我们已经做好了菜单栏和文件选择对话框。参考:http://blog.csdn.net/v_xchen_v/article/details/71524160

实现:

以缩略图列表展示图片的功能写在mymenu类的成员函数showImageList()中。使用Qt自带的QListWidget类实现这个功能

步骤:

  • 1.定义一个QListWidget对象
  • 2. 设置ViewMode等属性
  • 3.定义单元项并添加到QListWidget中
  • 4.调用QListWidget对象的show()方法

代码如下:

mymenu.h

 1 #ifndef MYMENU_H
 2 #define MYMENU_H
 3 
 4 #include "QMainWindow"
 5 class mymenu : public QMainWindow
 6 {
 7     Q_OBJECT  // must include this if you use Qt signals/slots
 8 public:
 9     //构造函数
10     explicit mymenu(QWidget *parent = 0);//QWidget *parent = 0 表示mymenu控件不是任何控件的子控件
11 
12 private slots:
13     void fileOpenActionSlot();//打开文件动作对应的槽函数
14 private:
15     void createAction();     //创建动作
16     void createMenu();       //创建菜单
17     void createContentMenu();//创建上下文菜单
18 private:
19     void selectFile();       //弹出选择文件对话框
20     void showImageList();    //用缩略图显示图片
21 private:
22     QAction *fileOpenAction; //创建一个QAction指针,打开文件动作
23     QMenu *menu;             //创建一个QMenu指针
24 private:
25     QStringList fileNames;
26 };
27 
28 #endif // MYMENU_H

 

mymenu.cpp

  1 #include "mymenu.h"
  2 #include "QMenu"
  3 #include "QMenuBar"
  4 #include "QAction"
  5 #include "QMessageBox"
  6 #include "QFileDialog"
  7 #include "QDebug"
  8 #include "QListWidget"
  9 /****************************************
 10 * Qt中创建菜单和工具栏需要如下步骤:
 11 * 1. 建立行为Aciton
 12 * 2. 创建菜单并使它与一个行为关联
 13 * 3. 创建工具条并使它与一个行为关联
 14 *****************************************/
 15 mymenu::mymenu(QWidget *parent):QMainWindow(parent)
 16 {
 17    createAction();
 18    createMenu();
 19    createContentMenu();
 20    this->resize(300,400);
 21 }
 22 void mymenu::createAction()
 23 {
 24     //创建打开文件动作
 25     fileOpenAction = new QAction(tr("打开文件"),this);
 26     //摄者打开文件的快捷方式
 27     fileOpenAction->setShortcut(tr("Ctrl+O"));
 28     //设置打开文件动作提示信息
 29     fileOpenAction->setStatusTip("打开一个文件");
 30     //关联打开文件动作的信号和槽
 31     connect(fileOpenAction,SIGNAL(triggered()),this,SLOT(fileOpenActionSlot()));
 32 }
 33 void mymenu::createMenu()
 34 {
 35     menu = this->menuBar()->addMenu(tr("文件"));
 36     menu->addAction(fileOpenAction);
 37 }
 38 
 39 void mymenu::createContentMenu()
 40 {
 41     this->addAction(fileOpenAction);
 42     this->setContextMenuPolicy(Qt::ActionsContextMenu);
 43 }
 44 
 45 void mymenu::fileOpenActionSlot()
 46 {
 47     //QMessageBox::warning(this,tr("提示"),tr("打开文件"),QMessageBox::Yes|QMessageBox::No);
 48     selectFile();
 49 }
 50 /****************************************
 51 * Qt中使用文件选择对话框步骤如下:
 52 * 1. 定义一个QFileDialog对象
 53 * 2. 设置路径、过滤器等属性
 54 *****************************************/
 55 void mymenu::selectFile()
 56 {
 57     //定义文件对话框类
 58     QFileDialog *fileDialog = new QFileDialog(this);
 59     //定义文件对话框标题
 60     fileDialog->setWindowTitle(tr("打开图片"));
 61     //设置默认文件路径
 62     fileDialog->setDirectory(".");
 63     //设置文件过滤器
 64     fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)"));
 65     //设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles
 66     fileDialog->setFileMode(QFileDialog::ExistingFiles);
 67     //设置视图模式
 68     fileDialog->setViewMode(QFileDialog::Detail);
 69     //打印所有选择的文件的路径
 70     if(fileDialog->exec())
 71     {
 72         fileNames = fileDialog->selectedFiles();
 73         showImageList();
 74     }
 75     for(auto tmp:fileNames)
 76         qDebug()<<tmp<<endl;
 77 }
 78 /****************************************
 79 * Qt中使用文件选择对话框步骤如下:
 80 * 1. 定义一个QListWidget对象
 81 * 2. 设置ViewMode等属性
 82 * 3. 定义单元项并添加到QListWidget中
 83 * 4. 调用QListWidget对象的show()方法
 84 *****************************************/
 85 void mymenu::showImageList()
 86 {
 87     //定义QListWidget对象
 88     QListWidget *imageList = new QListWidget;
 89     imageList->resize(365,400);
 90     //设置QListWidget的显示模式
 91     imageList->setViewMode(QListView::IconMode);
 92     //设置QListWidget中单元项的图片大小
 93     imageList->setIconSize(QSize(100,100));
 94     //设置QListWidget中单元项的间距
 95     imageList->setSpacing(10);
 96     //设置自动适应布局调整(Adjust适应,Fixed不适应),默认不适应
 97     imageList->setResizeMode(QListWidget::Adjust);
 98     //设置不能移动
 99     imageList->setMovement(QListWidget::Static);
100     for(auto tmp : fileNames)
101     {
102         //定义QListWidgetItem对象
103         QListWidgetItem *imageItem = new QListWidgetItem;
104         //为单元项设置属性
105         imageItem->setIcon(QIcon(tmp));
106         //imageItem->setText(tr("Browse"));
107         //重新设置单元项图片的宽度和高度
108         imageItem->setSizeHint(QSize(100,120));
109         //将单元项添加到QListWidget中
110         imageList->addItem(imageItem);
111     }
112     //显示QListWidget
113     imageList->show();
114 }

 

main.cpp

 1 #include "mymenu.h"
 2 #include <QApplication>
 3 #include <QProcess>
 4 #include <QMessageBox>
 5 int main(int argc, char *argv[])
 6 {
 7     QApplication a(argc, argv);
 8     mymenu m_menu;
 9     m_menu.show();
10     return a.exec();
11 }

 

效果:

Qt QListWidget实现图片缩略图列表Qt QListWidget实现图片缩略图列表

工程下载地址:http://download.csdn.net/detail/v_xchen_v/9838782

相关文章: