拖拽图片在Label上显示
来源:互联网 发布:算法导论第几版好 编辑:程序博客网 时间:2024/05/22 23:07
原文:http://www.cppblog.com/biao/archive/2011/10/23/158940.html
首先看下效果,左边是没有原始Label,右侧是把图片拖动到Label上显示效果。
思路:
1. 监视Label,当拖动鼠标到Label区域,Label接受拖放动作
2. 当操作放动作时,取得放的内容
3. 显示信息。
代码如下:
#include <QDragEnterEvent>#include <QDropEvent>#include <QMimeData>ImageWidget::ImageWidget(QWidget *parent) : QWidget(parent){ this->setFixedSize(300, 300); m_pHLayoutImageWidget = new QHBoxLayout(this); m_pLabelImage = new QLabel(tr("拖拽图片到这里")); m_pHLayoutImageWidget->addWidget(m_pLabelImage); m_pLabelImage->installEventFilter(this); // 事件过滤器 m_pLabelImage->setAcceptDrops(true); // 使Label接受拖拽操作 m_pLabelImage->setAlignment(Qt::AlignCenter); m_pLabelImage->setFixedSize(278, 278); m_pLabelImage->setStyleSheet("QLabel{font-size: 20px; border:2px dashed black;" "border-radius:10px; background:rgb(0, 255, 0, 100);}"); setLayout(m_pHLayoutImageWidget);}ImageWidget::~ImageWidget(){}bool ImageWidget::eventFilter(QObject *watched, QEvent *event){ if(watched == m_pLabelImage) { if(event->type() == QEvent::DragEnter) { // 当拖放时鼠标进入label时, label接受拖放的动作 QDragEnterEvent *dee = dynamic_cast<QDragEnterEvent *>(event); dee->acceptProposedAction(); return true; } else if(event->type() == QEvent::Drop) { // 当放操作发生后, 取得拖放的数据 QDropEvent *de = dynamic_cast<QDropEvent *>(event); QList<QUrl> urls = de->mimeData()->urls(); if (urls.isEmpty()) { return true; } QString path = urls.first().toLocalFile(); // 在label上显示拖放的图片 QImage image(path); // QImage对I/O优化过, QPixmap对显示优化 if(!image.isNull()) { image = image.scaled(m_pLabelImage->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); m_pLabelImage->setPixmap(QPixmap::fromImage(image)); } return true; } } return QWidget::eventFilter(watched, event);}
0 0
- 拖拽图片在Label上显示
- Qt在Label上显示图片
- 图片上显示label
- 如何在Label中显示图片
- Qt label显示图片
- Label显示图片
- iOS 开发笔记---在Label中显示图片
- iOS富文本编辑(在label里显示文字和图片)
- 小技巧,如何在Label中显示图片
- iOS富文本编辑(在label里显示文字和图片)
- 小技巧,如何在Label中显示图片
- 在Flex中的LineChart线条上显示Label标识
- 将HTML文本转换并显示在Label上
- RFSegmentView在iOS7设备上不显示label的解决方案
- 在同一个label上显示 两种规格的字体
- 如何在QT的label上显示图像
- 如何设置在一个Label上显示不同颜色的text
- 读取数据库某字段,并在label上显示
- Android博客周刊
- 业余android studio开发(3)—— 浏览网页(webView控件)
- PRML学习笔记(一)
- BZOJ 1206: [HNOI2005]虚拟内存
- Ubuntu 14.04使用Qt5不能输入中文的解决办法
- 拖拽图片在Label上显示
- [前端] html+css+javascript 实现选项卡切换效果
- Xcode 真机运行出现错误 Could not inspect the application package. 解决方法
- 业余android studio开发(3.5)—— webView完善,问题处理
- Javascript异步编程的4种方法
- Java字符串常量池
- 对form元素进行脚本编写
- ubuntu更改java为openjdk
- 金额计算不能用doube!!!!必须用BigDecimal