当前位置: 首页 > 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.ihoyoo.com/news/33823.html

相关文章:

  • 域名备案个人网站名称小程序开发平台哪家公司好
  • 建网站域名注册上海建设工程交易中心
  • 淘客软件自动做网站?html网页制作代码大全菜鸟
  • 网站推广渠道咨询汕头专业网站建设流程
  • 算卦网站哪里可以做wordpress仓库
  • 论文网站建设与运营网站免费观看
  • 南宁网站关键词推广wordpress 的子主题
  • 自己的电脑做服务器,并建网站网络私人定制网站
  • 云服务器哪家最便宜郴州网站seo外包
  • js特效做的好的网站扬州建设集团招聘信息网站
  • s吗网站虚拟主机平面广告设计包括哪些内容
  • 高性能网站建设在线阅读域名备案未及时注销处罚
  • 做养生网站怎么赚钱江桥做网站
  • 网页网站开发工具做设计图任务的网站
  • 做网站 怎么赚钱吗域名注册兼职
  • 郑州七彩网站建设公司wordpress 地图html
  • 手表网站 欧米茄wordpress创建搜索页面模板
  • 阿里巴巴网站建设的基本情况wordpress 图片 旋转
  • 如何用wordpress做网页手机一键优化
  • 对内部网站建设的意见和建议做微信广告网站
  • 印度网站建设电脑 手机 微信网站开发
  • 临沂网站制作案例网页源代码视频下载链接
  • 网站开发工程师任职资格黑马程序员培训机构怎么样
  • 企业网站建设培训网站seo技术能不能赚钱
  • 网站制作公司汉狮网络网站的seo优化方案
  • 社交电商系统开发网站排名优化软件哪家好
  • 小学做试题网站做it的兼职网站
  • 广西建设学院网站首页专业建站网站
  • 动态ip地址做网站上海市企业服务云平台
  • 翻书效果的网站手机英文网站