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个图片那么多出来的图片会自动隐藏然后在给图片添加一个动画的事件让他们可以滚动的播放出来上下 ...
随机推荐
- flask的安装
1.查看已安装的Flask版本 在 python 的交互模式中 : 1. import flask 没报错:已经安装了Flask,可以继续查看版本 报错:没安装Flask 2. flask.__ver ...
- P2216 [HAOI2007]理想的正方形(dp+单调队列优化)
题目链接:传送门 题目: 题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一行为3个整数,分别表 ...
- Java中类的构造方法
constructor:构造函数. 在创建对象的时候,对象成员可以由构造函数方法进行初始化. new对象时,都是用构造方法进行实例化的: 例如:Test test = new Test("a ...
- Centos7 下安装配置tomcat7
首先下载压缩包 wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.78/bin/apache-tomcat-7. ...
- C语言指针入门
指针指包含地址 声明指针: int num:声明整数 int *num:声明指针,下面的声明也是等价的,空格的使用指示个人爱好 int* num; int * num; int *num; in ...
- Java实现选择排序以及冒泡排序
//排序 选择排序 数组中每个元素都进行比较 public class Test { public static void main(String[] args) { int[] arr = {12, ...
- 使用kube_ping进行Keycloak群集设置 - DZone Cloud
转自:https://www.jdon.com/51501 看看如何使用kube_ping和Keycloak实现自动发现? Keycloak是一个开源软件,提供身份管理和访问管理的单点登录.Keyco ...
- Jmeter的NON-GUI模式
一般来讲,Jmeter执行压测,都是用Jmeter的命令模式,脚本调试好, 测试脚本能够大大缩减所需要的系统资源. 1.1命令介绍: jmeter -n -t <testplan filenam ...
- Update 20180317
Date todo 20180317 Opencv a) Install opencv+python+ide (http://opencv-python-tutroals.readth ...
- Java的date和string互转
https://blog.csdn.net/angus_17/article/details/7656631