前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个简单的图片浏览器

一个简单的图片浏览器

作者头像
Qt君
发布2020-07-16 10:37:05
5370
发布2020-07-16 10:37:05
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

❝实现拖拽图片到窗口显示,如果图片过大会出现滚动条,让看图片更方便。 ❞

实现

  • 使用QLabel显示图片。
  • 使用QScrollArea实现图片过大时的滚动视图。
  • 拖拽图片到窗口重写dragEnterEventdropEvent接口实现。注意:需要设置setAcceptDrops(true)开启窗口拖拽功能。

代码

代码语言:javascript
复制
#include <QScrollArea>
#include <QLabel>
#include <QDragEnterEvent>
#include <QDropEvent>
#include <QMimeData>
#include <QVBoxLayout>

class ImageView : public QWidget {
    Q_OBJECT
public:
    ImageView(QWidget *parent = NULL) : QWidget(parent)
    {
        this->setAcceptDrops(true);
        m_label = new QLabel(QStringLiteral("图片文件拖拽到此处"));
        
        /* 创建一个滚动视图 */
        QScrollArea *scrollArea = new QScrollArea();
        scrollArea->setWidget(m_label);

        QVBoxLayout *vLayout = new QVBoxLayout();
        vLayout->addWidget(scrollArea);

        this->setLayout(vLayout);
    }

protected:
    /* 拖动事件的进入操作事件 */
    void dragEnterEvent(QDragEnterEvent* event)
    {
        if (event->mimeData()->hasUrls()) {
            /* 表示可以在这个部件上拖放对象 */
            event->acceptProposedAction();
        }
        else {
            event->ignore();
        }
    }

    /* 拖动事件的释放操作事件 */
    void dropEvent(QDropEvent *event)
    {
        QString imageSource = event->mimeData()->urls().first().toLocalFile();
        m_label->setPixmap(QPixmap(imageSource));
        m_label->adjustSize();
    }

private:
    QLabel *m_label;
};

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档