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
#ifndef MYMENU_H
#define MYMENU_H #include "QMainWindow"
class mymenu : public QMainWindow
{
Q_OBJECT // must include this if you use Qt signals/slots
public:
//构造函数
explicit mymenu(QWidget *parent = );//QWidget *parent = 0 表示mymenu控件不是任何控件的子控件 private slots:
void fileOpenActionSlot();//打开文件动作对应的槽函数
private:
void createAction(); //创建动作
void createMenu(); //创建菜单
void createContentMenu();//创建上下文菜单
private:
void selectFile(); //弹出选择文件对话框
void showImageList(); //用缩略图显示图片
private:
QAction *fileOpenAction; //创建一个QAction指针,打开文件动作
QMenu *menu; //创建一个QMenu指针
private:
QStringList fileNames;
}; #endif // MYMENU_H
mymenu.cpp
#include "mymenu.h"
#include "QMenu"
#include "QMenuBar"
#include "QAction"
#include "QMessageBox"
#include "QFileDialog"
#include "QDebug"
#include "QListWidget"
/****************************************
* Qt中创建菜单和工具栏需要如下步骤:
* 1. 建立行为Aciton
* 2. 创建菜单并使它与一个行为关联
* 3. 创建工具条并使它与一个行为关联
*****************************************/
mymenu::mymenu(QWidget *parent):QMainWindow(parent)
{
createAction();
createMenu();
createContentMenu();
this->resize(,);
}
void mymenu::createAction()
{
//创建打开文件动作
fileOpenAction = new QAction(tr("打开文件"),this);
//摄者打开文件的快捷方式
fileOpenAction->setShortcut(tr("Ctrl+O"));
//设置打开文件动作提示信息
fileOpenAction->setStatusTip("打开一个文件");
//关联打开文件动作的信号和槽
connect(fileOpenAction,SIGNAL(triggered()),this,SLOT(fileOpenActionSlot()));
}
void mymenu::createMenu()
{
menu = this->menuBar()->addMenu(tr("文件"));
menu->addAction(fileOpenAction);
} void mymenu::createContentMenu()
{
this->addAction(fileOpenAction);
this->setContextMenuPolicy(Qt::ActionsContextMenu);
} void mymenu::fileOpenActionSlot()
{
//QMessageBox::warning(this,tr("提示"),tr("打开文件"),QMessageBox::Yes|QMessageBox::No);
selectFile();
}
/****************************************
* Qt中使用文件选择对话框步骤如下:
* 1. 定义一个QFileDialog对象
* 2. 设置路径、过滤器等属性
*****************************************/
void mymenu::selectFile()
{
//定义文件对话框类
QFileDialog *fileDialog = new QFileDialog(this);
//定义文件对话框标题
fileDialog->setWindowTitle(tr("打开图片"));
//设置默认文件路径
fileDialog->setDirectory(".");
//设置文件过滤器
fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)"));
//设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles
fileDialog->setFileMode(QFileDialog::ExistingFiles);
//设置视图模式
fileDialog->setViewMode(QFileDialog::Detail);
//打印所有选择的文件的路径
if(fileDialog->exec())
{
fileNames = fileDialog->selectedFiles();
showImageList();
}
for(auto tmp:fileNames)
qDebug()<<tmp<<endl;
}
/****************************************
* Qt中使用文件选择对话框步骤如下:
* 1. 定义一个QListWidget对象
* 2. 设置ViewMode等属性
* 3. 定义单元项并添加到QListWidget中
* 4. 调用QListWidget对象的show()方法
*****************************************/
void mymenu::showImageList()
{
//定义QListWidget对象
QListWidget *imageList = new QListWidget;
imageList->resize(,);
//设置QListWidget的显示模式
imageList->setViewMode(QListView::IconMode);
//设置QListWidget中单元项的图片大小
imageList->setIconSize(QSize(,));
//设置QListWidget中单元项的间距
imageList->setSpacing();
//设置自动适应布局调整(Adjust适应,Fixed不适应),默认不适应
imageList->setResizeMode(QListWidget::Adjust);
//设置不能移动
imageList->setMovement(QListWidget::Static);
for(auto tmp : fileNames)
{
//定义QListWidgetItem对象
QListWidgetItem *imageItem = new QListWidgetItem;
//为单元项设置属性
imageItem->setIcon(QIcon(tmp));
//imageItem->setText(tr("Browse"));
//重新设置单元项图片的宽度和高度
imageItem->setSizeHint(QSize(,));
//将单元项添加到QListWidget中
imageList->addItem(imageItem);
}
//显示QListWidget
imageList->show();
}
main.cpp
#include "mymenu.h"
#include <QApplication>
#include <QProcess>
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
mymenu m_menu;
m_menu.show();
return a.exec();
}
效果:
工程下载地址:http://download.csdn.net/detail/v_xchen_v/9838782
Qt QListWidget实现图片缩略图列表的更多相关文章
- Qt之股票组件-自选股--列表可以拖拽、右键常用菜单
目录 一.开头嘴一嘴 二.效果展示 三.自选股列表 1.列表初始化 2.添加Item 3.右键菜单 4.拖拽Item 5.刷新数据 四.相关文章 原文链接:Qt之股票组件-自选股--列表可以拖拽.右键 ...
- VS+Qt+Halcon——显示图片,实现鼠标缩放、移动图片
摘要 本篇博文记录一下,用VS+Qt+Halcon实现对图片的读取以及鼠标缩放,移动(鼠标事件调用了halcon自带的算子)的过程.以及遇到的坑..... 先来看一下动态效果图: 主要控件: 添加一个 ...
- Qt中在图片上叠加显示文字
Qt中在图片上叠加显示文字 QCustLabel::QCustLabel(QWidget *parent):QLabel(parent){ setPixmap(QPixmap(QString::f ...
- NodeJs + gm图片缩略图
我的另一篇文章: Nginx/Apache图片缩略图技术 gm官网 1, 软件环境 nodejs npm GraphicsMagick or ImageMagick 貌似ImageMagick在处理大 ...
- Android 使用MediaStore.Images和 Cursor查询本地图片和图片缩略图
先看一个实例: String[] projection = { MediaStore.Images.Thumbnails._ID ,MediaStore.Images.Thumbnails.DATA} ...
- Nginx/Apache图片缩略图技术
1,目的 2,使用方式 3,Nginx + Linux 缩略图实现 3.1,原理 3.2,nginx配置实现 3.3,例子 4,Apache + Windows缩略图实现 4.1,环境 4.2,原理 ...
- GD库 图片缩略图 图片水印
/** * GD库 图片缩略图 *//*$image = imagecreatefromjpeg("1.jpg");var_dump($image);exit;$width = i ...
- Nginx Image Module图片缩略图 水印处理模块
Nginx Image Module图片缩略图 水印处理模块 下载Tengine tar -zxvf tengine-1.4.5.tar.gz cd tengine-1.4.5 下载Nginx tar ...
- jQuery练手:仿新浪微博图片文字列表淡进淡出上下滚动效果
1.效果及功能说明 仿新浪微博图片文字列表上下淡进淡出间歇上下滚动 2.实现原理 首先要设定div内只能显示4个图片那么多出来的图片会自动隐藏然后在给图片添加一个动画的事件让他们可以滚动的播放出来上下 ...
随机推荐
- Unity物品栏、商城3D物品的显示插件
UI显示3D模型插件 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新 ...
- Sublime Text 3(中文)在Windows下的配置、安装、运行
Sublime Text 3(中文)下载.安装.运行! 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 具体 ...
- Codeforces 893A:Chess For Three(模拟)
题目链接:http://codeforces.com/problemset/problem/893/A 题意 Alex,Bob,Carl三人下棋,每次只能两个人进行下棋,要求输的那个人当旁观者,然后给 ...
- [zoj4045][思维+dfs]
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4045 题意:给一棵树.这棵树有n个节点,问你这个图能不能分成k个分块.这个 ...
- 【Wannafly挑战赛22A计数器】【裴蜀定理】
https://www.nowcoder.com/acm/contest/160/A 题目描述 有一个计数器,计数器的初始值为0,每次操作你可以把计数器的值加上a1,a2,...,an中的任意一个整数 ...
- Vue v-text和v-html的区别
v-text和v-html的区别 v-text:会把html的标签输出 v-html:不会把html的标签输出 比如: <template> <div id="app&qu ...
- Eclipse和Intel idea的常用技巧
使用Eclipse的几个必须掌握的快捷方式 “工若善其事,必先利其器”,感谢Eclipse,她 使我们阅读一个大工程的代码更加容易,在阅读的过程中,我发现掌握几个Eclipse的快捷键会使阅读体验 ...
- LinkedList(实现了queue,deque接口,List接口)实现栈和队列的功能
LinkedList是用双向链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢. 底层是一个双向链表,链表擅长插入和删除操作,队列和栈最常用的2种操作都设计到插入和删除 impo ...
- Distributed Phoenix Chat using Redis PubSub
转自:https://www.poeticoding.com/distributed-phoenix-chat-using-redis-pubsub/ In the previous articl ...
- lapis 项目添加prometheus 监控
lapis 是基于openresty 扩展的,所以直接将支持prometheus的模块构建进openresty 就可以了 我使用的是nginx-module-vts 模块 环境准备 我已经构建好了 ...