图片的拖动布局

此例实现将图片拖动到窗口中展示,并实现随着图片个数整体的布局也发生变化。
主要代码如下:
拖动进入事件

void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{if(!event->mimeData()->urls()[0].fileName().right(3).compare("png")||!event->mimeData()->urls()[0].fileName().right(3).compare("jpg")){event->acceptProposedAction();}else{event->ignore();}
}void MainWindow::dropEvent(QDropEvent *event)
{const QMimeData* mime = event->mimeData();QPixmap pix(mime->urls()[0].toLocalFile());//实现图片的自动布局emit signalCreateLabel(pix);
}

程序继承自mainwindow,重写了dragEnterEvent事件和dropEvent事件,并做了筛选,只有png和jpg才能拖动到窗口中,拖动释放后发送信号,创建显示图片的label,然后布局。

void MainWindow::slot_createLabel(QPixmap pix)
{if(m_count != 0 && m_count % 3 == 0){m_row++;m_count = 0;}m_count++;//创建qlabel,并存入list中QLabel *imageLabel = new QLabel;imageLabel->setScaledContents(true);imageLabel->setPixmap(pix);layoutWidget(imageLabel,m_row,m_count-1);
}

布局中以3列为一行。也可以加载图片。

void MainWindow::on_action_Open_triggered()
{QString fileName = QFileDialog::getOpenFileName(this,tr("选择文件"),tr("F:/"),"images(*.jpg *.png)");QPixmap pix(fileName);emit signalCreateLabel(pix);
}

通过action加载图片后在现有图片的基础上拖动图片进入到窗口,随着图片增加动态布局。
在拖动图片的时候存在一个问题,需要在构造函数中添加setAcceptDrops(true);才能接收拖动:

    setAcceptDrops(true);//不加此句,拖拽事件dragEnterEvent没有进去,无法实现拖拽connect(this,&MainWindow::signalCreateLabel,this,&MainWindow::slot_createLabel);m_widget = new QWidget;//主窗口中设置布局,必须创建qwidget,并将其设置为中心窗口,否则无法使用自己的布局setCentralWidget(m_widget);m_grid = new QGridLayout/*(this)*/;m_widget->setLayout(m_grid);m_count = 0;m_row = 0;

另外继承于qmainwindow的程序,要实现自己的布局,必须创建一个qwidget作为中心窗体,再在其上设置布局才能实现布局。qmainwindow具有自己默认的布局。

m_widget = new QWidget(this);//主窗口中设置布局,必须创建qwidget,并将其设置为中心窗口,否则无法使用自己的布局
setCentralWidget(m_widget);
m_grid = new QGridLayout;
m_widget->setLayout(m_grid);

以上代码只写出了重要部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL ES google angle

目录 一.google angle 简介 1.ANGLE 支持跨平台2.ANGLE 支持渲染器3.ANGLE 下载地址 二.EGL 坐标系三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 …

企业实战(Jenkins+GitLab+SonarQube)_06_Jenkins自定义安装插件

如何Jenkins自定义安装插件? 接上一篇:企业实战05_Jenkins创建管理员用户https://blog.csdn.net/weixin_40816738/article/details/90383710 文章目录Jenkins自定义安装插件一、操作流程二、Rebuilder插件安装三、safe restart插件安装Jenkins自定义安装…

大数据里的婚姻:婚后两年,出轨高峰……

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作者: Lens本文为Lens微信公号“WeLens”(ID:we-le…

setScaledContents的看法

看到的博客上都写的是setScaledContents(true);可以设置图片自适应控件大小,但是我对于此函数的看法是控件自适应图片大小,当图片为1920x1080时,加载图片的控件label就比之前大,当图片为500x300时,显示图片的label就变…

OpenGL ES Windows 搭建环境(MFC版本)

目录 一.OpenGL 和 OpenGL ES 1.OpenGL2.OpenGL ES 二.EGL 和 WGL三.OpenGL ES EGL API 简介四.OpenGL ES 案例五.依赖动态库六.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 …

企业实战(Jenkins+GitLab+SonarQube)_07_Jenkins 安全设置

前言: 默认全局安全性登录用户,可以进行任何操作,这种安全配置,相对不安全, 因此需要进行安全配置调整. 接上一篇:企业实战06_Jenkins自定义安装插件https://blog.csdn.net/weixin_40816738/article/details/90383716 …

漫画:图的 “最短路径” 问题 | 技术头条

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作者:蠢萌的小灰转自:程序员小灰————— 第二天 ————…

Qt无法解析的外部命令

程序编译没有问题,上传svn后,下载整个项目后,编译错误,提示多个无法解析的外部的命令。 检查的要点: 程序的编译环境是否正确; 程序需要的库的路径是否正确; 查看库的路径是否正确时&#xff0c…

Linux 环境安装并配置Git

Git是一个开源的分布式版本控制系统,用于存储和管理项目的源代码。 一、Linux 环境安装并配置Git 1. 运行命令在线安装Git2. 验证Git是否安装成功3. 对Git进行初始化4. 生成Git的授权证书5. 将Git证书配置到github上,保证Linux服务器和GitHub之间可连通…

OpenGL Windows 搭建环境(MFC版本)

目录 一.简介二.freeglut glew三.glfw glad四.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录…

Qt在指定区域内拖动窗口

将窗口中的小窗口按住拖动,使其在该窗口中移动。 效果图如下: 鼠标左键按住上图中的彩色窗口,就可以在窗口的客户区中来回拖动窗口。 项目的文件结构如下: 创建基于QWidget的应用程序,main.cpp的程序没有做任何的改变…

昨天,终于拿到了腾讯 offer

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作者 | 程序员小吴本文来自程序员小吴的一个读者的投稿,我跟他是在 2 月份…

OpenGL 褐色

目录 一.OpenGL 褐色 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 褐色 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >&…

企业实战(Jenkins+GitLab+SonarQube)_03_Jenkins登录

Jenkins怎样登录?接上一篇Jenkins运行 https://blog.csdn.net/weixin_40816738/article/details/90383686 文章目录1. Windows复制秘钥登录Jenkins2. Linux复制秘钥登录Jenkins1. Windows复制秘钥登录Jenkins 秘钥存放文件的位置(如上图所示): C:\User…

OpenStack精华问答 | OpenStack 网络中 OpenFlow 规则的作用是什么?

被亲生父母抛弃,被众多大厂拒绝,OpenStack 却依旧坚挺。今天就让我们看看关于OpenStack 的精华问答。1Q:OpenStack 网络中 OpenFlow 规则的作用是什么?A: OpenFlow 规则是一种机制,这种机制定义了一个数据包如何从源到达目的地。O…

记录qt窗口在拖动过程中出现的问题

问题描述: 在窗口拖动的过程中刚开始可以流畅的拖动窗口,但是一小会儿之后出现窗口拖不动的现象,或者按下鼠标在拖动区域内可以流畅拖动,但是按下鼠标朝一个方向拖动后,释放鼠标,按照此操作操作几次后&…

企业实战(Jenkins+GitLab+SonarQube)_02_Jenkins运行

Jenkins怎样运行? 文章目录一、Jenkins怎样在Windows运行?1. 找到下载的本地jenkins.war的目录,cmd进入命令行,执行:2. jenkins启动成功后,浏览器访问:localhost:8080二、Jenkins怎样在Linux运行…

Windows OpenGL ES 图像褐色

目录 一.OpenGL ES 图像褐色 1.原始图片2.效果演示 二.OpenGL ES 图像褐色源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL E…

要闻君说:国内首个5G电话由中国移动在京被打通!360公司转让奇安信股权;腾讯宣布开源三大开发工具 ,紧追技术共享步伐;...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go OPPO技术开放日第三期&#…

qt编译器5.12.3怎么一次性删除所有的断点

自己尝试出来的一个可以一次性删除所有断点的方法,可能还有其它方法,知者望以告知。 方法: 在debug模式下,进行调试运行,此时会出现调试的箭头,方框之类的一栏,如下图,在横向紧挨着的…