当前位置: 首页 > news >正文

龙华做企业网站网站关键词推广哪家好

龙华做企业网站,网站关键词推广哪家好,文大侠seo,给wordpress网站做ssl卸载一、需求说明 上一篇文章Qt之QAbstractItemView视图项拖拽(一)讲述了实现QAbstractItemView视图项拖拽的一种方式#xff0c;是基于QDrag实现的#xff0c;这个类是qt自己封装好了的#xff0c;所以可定制性也就没有了那么强#xff0c;最明显的是#xff0c;这个类在执…一、需求说明        上一篇文章Qt之QAbstractItemView视图项拖拽(一)讲述了实现QAbstractItemView视图项拖拽的一种方式是基于QDrag实现的这个类是qt自己封装好了的所以可定制性也就没有了那么强最明显的是这个类在执行exec方法后mouse系列的回调接口就被阻塞了随之而来的问题就是拖拽时item项没有了hover特性为了解决这个问题我们就不能使用QDrag类来实现拖拽了这也是这篇文章我要讲述的内容。 二、效果展示       如图1是demo的效果展示比较丑如果加上优秀的qss那必然能让人眼前一亮 图1 ListWidget拖拽 三、实现思路 继承QListWidget类重写其鼠标多拽时几个虚方法分别是mousePressEvent(鼠标按下)mouseMoveEvent(鼠标移动)mouseReleaseEvent(鼠标弹起)等当然还包括一些辅助的回调方法enterEvent和leaveEvent。鼠标按下时记录鼠标按下位置和鼠标点击项鼠标移动时移动插入项标示和item项快照位置并修改鼠标形状最后鼠标释放时判断如果需要更新拖拽项位置那么把原有项删除并构造新的项插入到目标位置      上边的几个步骤描述都是在mouse系列的回到接口中发生的再也没有QDrag的事儿啦。当然这个mouse方法中需要做一些鼠标状态维护等。 四、代码说明     1、重要的类和上一篇文章中的一样忘记的小伙伴可以到上一篇文章查看或者猛戳Qt之QAbstractItemView视图项拖拽(一)    2、下面就直接上代码    a、记录鼠标按下时信息 1 void DragList::mousePressEvent(QMouseEvent * event)2 {3 if (event-button() Qt::LeftButton)4 {5 m_LeftPress true;6 startPos event-pos();7 dragItem itemAt(event-pos());8 }9 10 QListWidget::mousePressEvent(event); 11 }     b、鼠标移动时维护鼠标状态、快照位置和插入表示位置 1 void DragList::mouseMoveEvent(QMouseEvent * event)2 {3 QListWidgetItem * item itemAt(event-pos());4 if (dragItem nullptr)5 {6 dragItem itemAt(event-pos());7 }8 9 if (m_ShotPicture nullptr) 10 { 11 InitShotLabel(); 12 } 13 if (m_ShotLine nullptr) 14 { 15 InitShotLine(); 16 } 17 18 QRect rect visualItemRect(dragItem); 19 if (ListItem * hoverWidget ItemWidget(item)) 20 { 21 QRect hoverRect visualItemRect(item); 22 QPoint pos hoverWidget-mapFromParent(event-pos()); 23 if (hoverRect.size().height() / 2 pos.y()) 24 { 25 m_ShotLine-move(mapToGlobal(QPoint(2, hoverRect.y() hoverRect.height() 1))); 26 } 27 else 28 { 29 m_ShotLine-move(mapToGlobal(QPoint(2, hoverRect.y() 1))); 30 } 31 32 m_ShotLine-setVisible(hoverRect.contains(event-pos())); 33 } 34 35 if (ListItem * newWidget ItemWidget(dragItem)) 36 { 37 m_ShotPicture-move(mapToGlobal(event-pos() - newWidget-mapFromParent(startPos))); 38 if (rect.contains(event-pos()) || event-pos().isNull()) 39 { 40 setCursor(Qt::ForbiddenCursor); 41 } 42 else 43 { 44 setCursor(Qt::ArrowCursor); 45 } 46 if (m_ShotPicture-isHidden()) 47 { 48 m_ShotPicture-show(); 49 } 50 } 51 52 53 // QListWidget::mouseMoveEvent(event); 54 }     c、鼠标释放时处理拖拽结果 1 void DragList::mouseReleaseEvent(QMouseEvent * event)2 {3 if (event-button() Qt::LeftButton)4 {5 m_LeftPress false;6 if (m_ShotPicture)7 {8 m_ShotPicture-close();9 m_ShotPicture-deleteLater(); 10 m_ShotPicture nullptr; 11 } 12 if (m_ShotLine) 13 { 14 m_ShotLine-close(); 15 m_ShotLine-deleteLater(); 16 m_ShotLine nullptr; 17 } 18 MouseRelease(event); 19 } 20 21 setCursor(Qt::ArrowCursor); 22 23 QListWidget::mouseReleaseEvent(event); 24 }     d、初始化跟随鼠标移动的快照并把当前拖拽的窗口截图设置给快照 1 void DragList::InitShotLabel()2 {3 m_ShotPicture new QLabel;4 m_ShotPicture-setWindowOpacity(0.95);5 m_ShotPicture-setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);6 m_ShotPicture-setAttribute(Qt::WA_TransparentForMouseEvents, true);7 8 if (ListItem * oldWidget ItemWidget(dragItem))9 { 10 m_ShotPicture-setPixmap(oldWidget-grab()); 11 m_ShotPicture-resize(visualItemRect(dragItem).size()); 12 } 13 m_ShotPicture-show(); 14 }     e、初始化鼠标插入位置标示 1 void DragList::InitShotLine()2 {3 m_ShotLine new QLabel;4 m_ShotLine-setObjectName(QStringLiteral(ShotLine));5 m_ShotLine-setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);6 m_ShotLine-setAttribute(Qt::WA_TransparentForMouseEvents, true);7 m_ShotLine-setStyleSheet(QLabel#ShotLine{background:green;});//用图片代替8 9 if (ListItem * oldWidget ItemWidget(dragItem)) 10 { 11 // m_ShotLine-setPixmap(oldWidget-grab()); 12 m_ShotLine-resize(visualItemRect(dragItem).size().width(), 2); 13 } 14 m_ShotLine-show(); 15 }     f、鼠标弹起具体处理函数 1 void DragList::MouseRelease(QMouseEvent * event)2 {3 QListWidgetItem * item itemAt(event-pos()); 4 if (item nullptr || item dragItem)5 {6 return;7 }8 9 int insertPos row(item); 10 if (ListItem * oldWidget ItemWidget(item)) 11 { 12 QPoint pos oldWidget-mapFromParent(event-pos()); 13 if (oldWidget-size().height() / 2 pos.y()) 14 { 15 insertPos 1; 16 } 17 } 18 19 if (dragItem) 20 { 21 if (ListItem * oldWidget ItemWidget(dragItem)) 22 { 23 QListWidgetItem * newItem new QListWidgetItem; 24 ListItem * itemWidget new ListItem; 25 itemWidget-SetData(oldWidget-GetData()); 26 27 insertItem(insertPos, newItem); 28 setItemWidget(newItem, itemWidget); 29 30 setCurrentItem(newItem); 31 32 oldWidget-deleteLater(); 33 } 34 35 dragItem takeItem(row(dragItem)); 36 if (dragItem) 37 { 38 delete dragItem; 39 dragItem nullptr; 40 } 41 } 42 } 五、下载链接      Qt之QAbstractItemView视图项拖拽2  六、相关文章   自定义拖放数据这篇文章是讲述怎么自定义QMimeData数据的我使用的是其中第二个方法。   Qt之QAbstractItemView视图项拖拽(一)   Qt之QAbstractItemView选择无焦点转载于:https://www.cnblogs.com/swarmbees/p/6055280.html
http://www.lebaoying.cn/news/33823.html

相关文章:

  • 郑州网站建设冫汉狮网络对于一个确定的网和设计方案
  • 做超市海报的网站温州网站制作网站
  • 黄岐网站建设建一个网站需要多少时间表
  • 外贸建站培训微信手机网站支付怎么做
  • 幸运28网站代理怎么做网站推广seo软件
  • 每天一篇好文章网站做阿里巴巴网站图片尺寸
  • 烟台消防建设信息网站wordpress获取文章的标签
  • 专类销售网站有哪些建设网站方面的证书
  • 引擎搜索网站柒零叁网站建设湖南长沙
  • 临沂设计网站的公司重庆建设工程造价信息
  • 内江市建设培训中心网站洛阳做网站公司哪家好
  • 有没有专门做团购的网站沈阳网站建设与维护
  • 株洲网站优化找哪家沈阳建设工程质量检测中心网站
  • 科技+杭州+网站建设上海外贸上市公司有哪些
  • 企业网站的建设目标有哪几种unsplash素材网站
  • 秦皇岛网络优化招聘怎么关键词优化网站
  • 手机网站源码怎么打开在农村做相亲网站怎么样
  • 三拼域名做网站长不长wordpress框架简介
  • 免费网站制作报价融资是什么意思
  • 做谷歌网站南靖网站建设
  • 查看网站访问量学视频剪辑大概需要多少钱
  • PS做图标兼职网站做贷款网站
  • 网站开发的费用是怎么计算的长春专业网站推广
  • dede title 我的网站吉林省吉林市舒兰市
  • 我的世界做图片的网站建设通是不是官方网站
  • 起名网站开发璧山最新消息
  • 易语言做网站qq群营销工具
  • centos做网站wordpress换了空间无法登录密码
  • 网站加载页面怎么做wordpress缩写是什么意思
  • python做网站的案例莆田市商城网站建设