Qt之QAbstractItemView视图项拖拽(二)】的更多相关文章

一.需求说明 上一篇文章Qt之QAbstractItemView视图项拖拽(一)讲述了实现QAbstractItemView视图项拖拽的一种方式,是基于QDrag实现的,这个类是qt自己封装好了的,所以可定制性也就没有了那么强,最明显的是,这个类在执行exec方法后,mouse系列的回调接口就被阻塞了,随之而来的问题就是拖拽时item项没有了hover特性,为了解决这个问题,我们就不能使用QDrag类来实现拖拽了,这也是这篇文章我要讲述的内容. 二.效果展示 如图1是demo的效果展示,比较丑,…
一.需求说明 最近在搞视图项的拖拽,也上网查了一些资料,好多的文档都是一样的,只是被不通的网站所收录了(也有可能是被爬过去的,不明所以),不过也有一些文档写的不错,不过就是太简易,都是点睛之笔,总之功能还是勉强可以实现,加之比较零散,刚好我自己也因为这个需求写了一个demo,因此我就把自己写这个demo的过程分析给大家,希望能帮到有这个需求的小伙伴. 二.效果展示 如图1是demo的效果展示,比较丑,如果加上优秀的qss,那必然能让人眼前一亮. 图1 ListWidget拖拽 三.实现思路 继承…
本博的示例来自与QT Example:C:\Qt\Qt5.9.3\Examples\Qt-5.9.3\widgets\graphicsview\dragdroprobot 将通过分析示例完成主要功能: (1)颜色图元绘制 (2)机器人图元绘制 (3)颜色图元的鼠标事件 (4)机器人图元的DragDrop事件 (5)图元动画效果 一.颜色图元类实现 QGraphicsItem作为所有图元类的基类,自定义图元类需继承QGraohicsItem类,实现其基类的纯虚函数 ; ; boundingRect…
1.QT自定义标题栏,拖拽标题栏移动窗口(只能拖拽标题,其他位置无法拖拽) 方法一: 转载:http://blog.sina.com.cn/s/blog_4ba5b45e0102e83h.html .h文件中 //自己重新实现拖动操作 protected: void mouseMoveEvent ( QMouseEvent * event ); void mousePressEvent ( QMouseEvent * event ); void mouseReleaseEvent(QMouseE…
拖拽是编程中经常要用到的,我这里主要是实习了Treewidget之间直接拖拽Item,按下Ctrl键的话是copy,不按Ctrl则是Move.以下是实现代码 class TreeItemMimeData:public QMimeData { Q_OBJECT public: TreeItemMimeData():QMimeData() { m_pDragItem = NULL; } ~TreeItemMimeData() { } void SetDragData(QString mimeType…
1. .h文件中添加 private:    QPoint dragPosition; 2. 在cpp文件中重写鼠标点击和拖拽函数 void ShapeWidget::mousePressEvent(QMouseEvent * event){    if (event->button() == Qt::LeftButton) //点击左边鼠标    {         dragPosition = event->globalPos() - frameGeometry().topLeft(); …
为了实现如图所示的树状结构图,并使列表项可拖动到盒子里,研究了ztree这个插件的使用,并仔细研究了列表项的拖动事件.完成了预期需求,对jQuery的运用得到了提高.这个插件的功能非常强大,除了基本的简单树结构外,还支持自定义图标.自定义字体.单击节点控制.异步加载节点数据等多种扩展功能.本文只介绍一下基本树的实现,需要扩展功能的话,可以参考其API根据项目需求灵活展开工作.官网地址为:http://www.treejs.cn/v3/demo.php#_101 需求图 实现:首先我们先下载ztr…
本课中,我们将学习如何使用树型视图控件.另外还要学习如何在树型视图中完成拖-拉动作,以及如何使用图象列表. 理论: 树型视图是一种特别的窗口,我们可以使用它一目了然地表示某种层次关系.譬如象在资源管理器中左边窗口中的就是树型视图.您可以调用CreateWindowEx来创建树型视图,传递一个类名“"SysTreeView32"”,或者您也可以把它放到一个对话框中去.不要忘了在您的代码中加入InitCommonControls函数. 树型视图有几种特有的风格.下面是几种经常使用的. TV…
最近项目需要实现windows下橡皮筋的效果,所以对此做了一些了解,特此记录. 首先windows系统是支持橡皮筋效果的,需要使用win32方 法:SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, showFullWindow, NULL, 0);showFullWindow是一个变量,如果需要windows默认支持橡皮筋则需要传递参数false,否则传递参数true,如果使用 windows默认的橡皮筋缩放,效果如图1所示,会产生一个矩形框,不管是窗口移…
一.功能概述 说起右键菜单,之前Qt之自定义QLineEdit右键菜单这篇文章中我已经讲述过3种右键菜单的实现方式,今儿也是在啰嗦一下,针对QListWidget类在定制一下右键菜单,我使用的具体方式呢,是直接重写了contextMenuEvent方法,在这个方法中弹出右键菜单. 二.效果展示 如图1是针对QListWidget定制的右键菜单,美观程度一般,但是功能基本实现 图1 QListWidget右键菜单 三.代码讲解 右键菜单在相关文章小节中我已经给出了一些文章,关于右键菜单的弹出逻辑我…
今天结合之前做过的一些拖拽的例子来对这个方面进行一些总结,这里主要用两个例子来说明在WPF中如何使用拖拽进行操作,元素拖拽是一个常见的操作,第一个拖拽的例子是将ListBox中的子元素拖拽到ListView的某一个节点,从而将该子元素作为当前节点的子节点.第二个例子就是将ListView的某一项拖拽到另外一项上从而使两个子项位置互换,这两个例子的原理类似,实现细节上有所差别,下面就具体分析一下这些细节. DEMO1 一 示例截图 图一 示例一截图 二 重点原理分析             2.1…
一.说明 使用dev控件,TreeList1向TreeList2拖拽 二.属性 //允许拖拽            treeList1.AllowDrop = true;            treeList2.AllowDrop = true;            //允许多行选择            treeList1.OptionsSelection.MultiSelect = true; 三.代码 #region tree拖拽操作 TreeListHitInfo downHitIn…
代码地址如下:http://www.demodashi.com/demo/11366.html 目录 UICollectionView的定义 UICollectionView快速构建GridView网格视图 UICollectionView拖拽重排处理(iOS8.x-/iOS9.x+) UICollectionView实现简单轮播 UICollectionView的定义 UICollectionView同UITableView一样,是iOS中最常用到数据展示视图. 官方定义: An object…
目录 一.开头嘴一嘴 二.效果展示 三.自选股列表 1.列表初始化 2.添加Item 3.右键菜单 4.拖拽Item 5.刷新数据 四.相关文章 原文链接:Qt之股票组件-自选股--列表可以拖拽.右键常用菜单 一.开头嘴一嘴 上一篇文章Qt之股票组件-股票检索--支持搜索结果预览.鼠标.键盘操作讲述了股票检索功能,这篇文章我们来看看自选股列表的实现. 如果有需要的朋友可以加我好友,有偿提供源码.或者也可以进一步提供功能定制 封装的控件,或者demo都是没有样式的,所以看着会比较丑一些,不过加样式…
https://github.com/onlyhom/mobileSelect.js/blob/master/docs/README-CN.md mobileSelect.js 一款多功能的移动端滚动选择器,支持单选到多选.支持多级级联.提供自定义回调函数.提供update函数二次渲染.重定位函数.兼容pc端拖拽等等.. [English documents] 特性 原生js移动端选择控件,不依赖任何库 可传入普通数组或者json数组 可根据传入的参数长度,自动渲染出对应的列数,支持单项到多项选…
目录 一.概述 二.效果展示 三.demo制作 1.设计窗体 2.双击放大 四.拖拽 五.相关文章 原文链接:Markdown模板 一.概述 用Qt进行开发界面时,既想要实现友好的用户交互又想界面漂亮,那么自定义界面就必不可少.其中有一个操作就是是我们每一个Qter开发者都要会的,而且是经常进行的. Qt::FramelessWindowHint这个属性想必大家都使用过,有些同学可能对这个属性很了解,也用的是炉火纯青,今天我们也来说说这个属性. 关于这个无边框属性网上也有一些文章,有些谈论的是b…
关于qt中的拖放操作,首先可以看这篇官方文档:http://doc.qt.io/qt-5.5/dnd.html 一.QDrag 首先是创建QDrag,可以在mousePressEvent或者mouseMoveEvent中创建. void DragDropWidget::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { QDrag *drag = new QDrag(this); QMime…
问题 使用Qt Designer 设计的界面,在缩放的时候不能随着主窗口一起缩放. 解决办法 之前遇到这个问题的时候,都是直接重写resizeEvent接口来实现的,在自动生成的Ui_Widget或Ui_MainWindow等类中会有一个widget或者centerWidget的成员,所有的拖拽出的控件都是在这之上的.只需要把resizeEvent传递给它即可. 这种方式虽然解决了问题,但是总是不太理想,还需要去改代码. 好的解决办法 其实中问题不需要去改代码,既然所有的拖拽出的控件都在一个wi…
引言 在上一篇日志“canvas 图片拖拽旋转之一”中,对坐标转换有了比较深入的了解,但是仅仅利用坐标转换实现的拖拽旋转,会改变canvas坐标系的状态,从而影响画布上其他元素的绘制.因此,这个时候需要用到一对canvas方法,在变换坐标系前保存canvas状态,在变换并绘制完成之后,恢复canvas状态,即save()和restore(). [备注] 这篇文章只是记录分享下解决问题的过程,找我要demo的,或者问我什么东西怎么做的,就不要加我了.你可以加一个canvas相关的交流群,或者如果需…
前言:前天刚写了篇JS组件系列——Bootstrap Table 表格行拖拽,今天接到新的需要,需要在之前表格行拖拽的基础上能够同时拖拽选中的多行.博主用了半天时间研究了下,效果是出来了,但是感觉不尽如人意.先把它分享出来,以后想到更好的办法再优化吧. 一.效果展示 1.拖动前 2.拖动中 3.拖动后 4.撤销回到拖动前状态 二.需求分析 通过上篇我们知道,如果要实现拖拽,必须要有一个可以拖拽的标签,或者叫容器,比如上篇里面的tr就是一个拖拽的容器,那么如果要实现选择行的拖拽,那么博主的第一反应…
问题 使用Qt Designer 设计的界面,在缩放的时候不能随着主窗口一起缩放. 解决办法 之前遇到这个问题的时候,都是直接重写resizeEvent接口来实现的,在自动生成的Ui_Widget或Ui_MainWindow等类中会有一个widget或者centerWidget的成员,所有的拖拽出的控件都是在这之上的.只需要把resizeEvent传递给它即可. 这种方式虽然解决了问题,但是总是不太理想,还需要去改代码. 好的解决办法 其实中问题不需要去改代码,既然所有的拖拽出的控件都在一个wi…
在一些允许用户自定义栏目顺序的app(如:凤凰新闻.网易云音乐等),我们可以方便地拖拽列表项来完成列表的重新排序,进而完成对栏目顺序的重排.这个功能很人性化,而实现起来其实很简单(甚至都不用写什么后台代码),只有三步. ①把冰箱门打开 首先,我们需要让冰箱的大门敞开,也就是允许我们进行拖拽的相关操作.以ListView为例,注意下面几个属性. <StackPanel> <ListView x:Name="list" AllowDrop="True"…
Qt 无边框拖拽实现 头文件定义: class TDragProxy:public QObject { Q_OBJECT public: TDragProxy(QWidget* parent); ~TDragProxy(); protected: enum WidgetRegion { Top = , TopRight, Right, RightBottom, Bottom, LeftBottom, Left, LeftTop, Inner, Unknown }; public: void Se…
写次篇文章之前,qt窗口的放大缩小和拖拽我都是通过setGeometry方法实现的,但是作为windows程序,windows支持橡 皮筋式(拖拽时有一个虚框)拖拽和拉伸.通过setGeometry方式实现功能是没有这种效果,幸好qt5中提供了一个本地事件处理接口 nativeEvent,具体功能可以看帮助文档,本文只讲述用该接口实现窗口放大.缩小和拖拽,具体实现代码如下: virtual bool nativeEvent(const QByteArray &, void *, long *)…
我们知道,要实现窗口移动可以直接鼠标点住窗口的标题栏实现拖拽移动,这是窗口默认的行为,在QT中的事件响应函数为moveEvent. 但是现实中经常需要鼠标点住窗口客户区域实现窗口的拖拽移动,代码实现如下: Widget.h 12345678910111213141516171819202122232425262728   #ifndef WIDGET_H #define WIDGET_H #include <QWidget> class QMouseEvent; class Widget : …
odoo列表tree视图 拖拽排序 实现效果: 实现方式: 模型中定义字段: class CusYourModel(models.Model): """ 你的模型 """ _name = 'xxxxxxx' _order = "sequence, id" sequence = fields.Integer(string='Sequence') 前端view视图增加相应字段: <tree string="xxxx…
开发环境:win10+vs2015+qt5.9.1 背景:开发过程中,一般很少会使用系统提供的标题栏和边框:往往都是自定义一个自己设计的方案.这时候在QWidget中需要加上flag:Qt::FramelessWindowHint(实现方式很容易百度就不再赘述).但是这样带来的问题就是系统自带的标题栏边框提供的拖拽移动和拖拽修改窗口大小的功能被废弃掉.这样就需要自己实现一个方案来提供这个功能. 实现:拖拽移动在很多文章中都应该有介绍了,代码也非常简单,不再赘述,主要讲一下拖拽修改窗口大小的方式:…
win10的拖拽贴靠功能被禁用了,偶然的机会,在设置中看到了相关的设置项,如下图 直觉告诉我一定是设置注册表中的某一项,于是决定调查下具体的注册表位置.请出procmon.exe,然后关闭贴靠功能,停止收集.在收集到的信息中只关注注册表相关的信息,而且Result是Success的,向下浏览的时候发现了SystemSettings.exe这一项,只保留Process Name是SystemSettings.exe的项目.得到的结果如下图所示:   注意HKCU\Control Panel\Des…
所需待重写函数: [virtual] bool QObject::eventFilter(QObject *watched, QEvent *event); /* * Filters events if this object has been installed as an event filter for the watched object. * In your reimplementation of this function, if you want to filter the eve…
最近在学习Qt 里面的QML, 使用DropArea和MouseArea实现了ListView的拖拽. 想起了当年用Delphi, 差不多一样的东西, 不过那是2000了. Delphi也是不争气啊, 多好的IDE, 硬生生发展不起来..... 代码可以在 https://github.com/cnscud/learn/tree/master/qt/dragdroplistview 找到 /** samples changed from Qt tutorial "dynamicview3&quo…