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个图片那么多出来的图片会自动隐藏然后在给图片添加一个动画的事件让他们可以滚动的播放出来上下 ...
随机推荐
- lesson2-cnn-fastai
%mkdir的做法glob('.jpg')np.random.permutation(图片)np.random.rename(,)#save_array:utils中,连接每个btch得到的数组#ke ...
- net框架平台下RPC框架选型
net RPC框架选型 近期开始研究分布式架构,会涉及到一个最核心的组件:RPC(Remote Procedure Call Protocol).这个东西的稳定性与性能,直接决定了分布式架构系统的好坏 ...
- LeetCode – Lemonade Change
At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you, and ...
- Python-pycurl模块的安装
先执行以下命令(因为我在另一个终端执行,所以history的编号有重复) 7 wget https://pypi.python.org/packages/source/p/pycurl/pycurl- ...
- C# 键盘响应事件及键值对照表
键盘响应事件总结 键盘响应事件是在用户按下某个键后触发的事件,可以是任意操作,但不是任意键都可以被捕获的. 原型:public event KeyPressEventHandler KeyPress ...
- 在sorted range上的操作(includes,set_union,set_intersection,set_difference)
includes //版本一:用operator <比较元素 template <class InputerIterator1,class InputerIterator2> boo ...
- c# 线程同步各类锁
1)原子操作(Interlocked):所有方法都是执行一次原子读取或一次写入操作. 2)lock()语句:避免锁定public类型,否则实例将超出代码控制的范围,定义private对象来锁定. 3) ...
- 20165308 《Java程序设计》第9周学习总结
20165308 <Java程序设计>第9周学习总结 教材学习内容总结 13章知识总结 获取地址 1.获取Internet上主机的地址 可以使用InetAddress类的静态方法getBy ...
- 推荐一个 基于 WebSocket 和 Redis 的 即时通信 开源项目
项目地址 : https://github.com/2881099/im 大家可以和 SignalR 比较看看 , 如何 ? ^^ ^^ ^^ 这是一个 网友 写的 , 他还写了 ...
- Elasticsearch(四)优化用户体验
改正用户拼写 Term suggester:词项匹配建议:可以通过wiki的插件来下载wiki上面的单词以及短语,来作为你的拼写提示基础仓库: Phrase suggester:n-gram算法,短语 ...