Qt ListWidget item 发起拖放
第一步:重写类 MyListWidget 继承自 QListWidget
第二步:重写 mousePressEvent 函数 和 mouseMoveEvent 函数
void mousePressEvent(QMouseEvent* event);
void mouseMoveEvent(QMouseEvent* event);
MyListWidget.h 文件
#ifndef MYLISTWIDGET_H
#define MYLISTWIDGET_H #include <QListWidget>
// 包含所有用到的界面类
#include <QtGui> class MyListWidget : public QListWidget
{
Q_OBJECT public:
MyListWidget(QWidget *parent);
~MyListWidget(); private:
// 拖放起点
QPoint m_startPos;
// 被拖放的item
QListWidgetItem* m_sitem;
void mousePressEvent(QMouseEvent* event);
void mouseMoveEvent(QMouseEvent* event);
}; #endif // MYLISTWIDGET_H
MyListWidget.cpp 文件
#include "MyListWidget.h" MyListWidget::MyListWidget(QWidget *parent)
: QListWidget(parent)
{ } MyListWidget::~MyListWidget()
{ } void MyListWidget::mousePressEvent(QMouseEvent* event)
{
// 记下起点
m_startPos = event->pos();
m_sitem = this->itemAt(event->pos());
// 记得调用父类的函数,保持原有的按键行为
QListWidget::mouseMoveEvent(event);
} void MyListWidget::mouseMoveEvent(QMouseEvent* event)
{
// 只允许左键拖动
if (!(event->buttons() & Qt::LeftButton))
{
return;
}
// 移动一定距离后才算是开始拖动
if ((event->pos() - m_startPos).manhattanLength() < QApplication::startDragDistance())
{
return;
}
// 找到拖动的项
if (m_sitem == NULL)
{
return;
}
QString itemText = m_sitem->text();
// 创建数据
QDrag* drag = new QDrag(this);
QMimeData* mimeData = new QMimeData();
mimeData->setText(itemText);
drag->setMimeData(mimeData);
// 设置拖动时的图像显示
QPixmap drag_img(, );
QPainter painter(&drag_img);
painter.drawText(QRectF(, , , ), itemText, QTextOption(Qt::AlignVCenter));
drag->setPixmap(drag_img);
// 启动拖放 start a drag
Qt::DropAction result = drag->exec(Qt::CopyAction | Qt::MoveAction);
// 检查操作有没有成功,有没有被取消
if (Qt::IgnoreAction != result)
{
qDebug() << QString::fromLocal8Bit("成功完成拖拽");
}
// 按住 Ctrl 就是 Qt::CopyAction,没按 就是 Qt::MoveAction
}
Qt ListWidget item 发起拖放的更多相关文章
- C/C++ Qt ListWidget 列表框组件应用
ListWidget列表框组件,该组件与TreeWidget有些相似,区别在于TreeWidget可以实现嵌套以及多字段结构,而ListWidget组件则只能实现单字段结构,ListWidget组件常 ...
- Qt listwigwt item 加入自定义元素
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- Qt graphic item日记
今天在用用graphic view 加入graphic item的时候要引入一个context menu,自然就要对context menu上的action进行slot处理.可是graphic ite ...
- Qt listWidget和QListWidgetItem的简单使用
简单的来实习了下 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QListWid ...
- C/C++ Qt 给ListWidget增加右键菜单
在上一篇博文<C/C++ Qt ListWidget 列表框组件应用>中介绍了ListWidget组件的基本使用技巧,本次将给ListWidget组件增加一个右键菜单,当用户在ListWi ...
- Qt:QListWidgetItem
0.说明 一个QListWidgetItem是QListWidget中的一项(一行). 每个Item都可以持有多部分的信息,并将它们在适当时候展示出来. 在构造一个Item时指明它所在的List Wi ...
- 【Win10应用开发】通过拖放来打开文件
除了可以使用XXXFilePicker来浏览文件外,其实在UWP APP中,也可以向传统Windows窗口一样,通过拖放的方式来打开文件. 处理过程和WPF的原理差不多,毕竟都是一脉相承,于是,在学习 ...
- Qt图形视图框架公开课资料
接受CSDN学院的邀请,讲一次公开课,主题是Qt图形视图框架,报名链接在这里:http://edu.csdn.net/huiyiCourse/detail/228. 内容有两部分:自定义Item和拖放 ...
- Qt Quick实现的涂鸦程序
之前一直以为 Qt Quick 里 Canvas 才干够自绘.后来发觉不是,原来还有好几种方式都能够画图! 能够使用原始的 OpenGL(Qt Quick 使用 OpenGL 渲染).能够构造QSGN ...
随机推荐
- SRS之安装与使用
1. 安装 1.1 github 获取源码 git clone https://github.com/ossrs/srs.git 1.2 编译 1.2.1 关闭防火墙和 selinux 先关闭防火墙, ...
- 2019软工实践_Alpha(事后诸葛亮)
组长博客 感谢组长 总结思考 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 弥补Powerpoint中模板转换存在的缺陷,完善PPT模板一键转换的功能 ...
- C# System.Net.Mail.MailMessage 发邮件
C# System.Net.Mail.MailMessage 发邮件 上篇文化在哪个可以看到使用 System.Web.Mail.MailMessage 发邮件时会提示 ,提供用于构造电子邮件的属性和 ...
- 数据库sql优化总结之5--数据库SQL优化大总结
数据库SQL优化大总结 小编最近几天一直未出新技术点,是因为小编在忙着总结整理数据库的一些优化方案,特此奉上,优化总结较多,建议分段去消化,一口吃不成pang(胖)纸 一.百万级数据库优化方案 1.对 ...
- arcgis python脚本工具实例教程—栅格范围提取至多边形要素类
arcgis python脚本工具实例教程-栅格范围提取至多边形要素类 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 功能:提取栅格数据的范围, ...
- 三层架构BLL+DAL+Model & MVC & MVVM
三层架构 - 国内版 Binghttps://cn.bing.com/search?FORM=U227DF&PC=U227&q=%E4%B8%89%E5%B1%82%E6%9E%B6% ...
- nginx日志切割和日志清理
##########################日志切割################################1.上传脚本到/usr/local/nginx/logs/下 2.并附执行权 ...
- 【转载】 tensorflow的单层静态与动态RNN比较
原文地址: https://www.jianshu.com/p/1b1ea45fab47 yanghedada -------------------------------------------- ...
- WebAPI.请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式 从客户端xx中检测到有潜在危险的Request.Form值
事故现场 报错"从客户端 中检测到有潜在危险的Request.Form值" //后台代码 namespace Test { [RoutePrefix("TestClass ...
- LODOP很简短的问答(纯文字)
打印机选择打印机,参考样例5,7http://www.c-lodop.com/LodopDemo.html打印机的一些优先级,参考http://www.c-lodop.com/blogs/Blog00 ...