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

玉树wap网站建设公司张家港网站设计建设

玉树wap网站建设公司,张家港网站设计建设,常见的线下推广渠道有哪些,个人如何做微商城网站Qt拖拽事件详解及代码实现 前言项目描述代码结构简介代码详解 前言 qt拖拽事件是一项非常常用并且非常好用的功能#xff0c;拖拽实际上是一种信息传递的载体#xff0c;其目的是将信息从一个对象传递给另一个对象。通过拖拽可以简化文件打开或业务操作流程#xff0c;qt初… Qt拖拽事件详解及代码实现 前言项目描述代码结构简介代码详解 前言 qt拖拽事件是一项非常常用并且非常好用的功能拖拽实际上是一种信息传递的载体其目的是将信息从一个对象传递给另一个对象。通过拖拽可以简化文件打开或业务操作流程qt初学者学会拖拽事件后就可以马上开发出许多有趣的项目本文以一个简单的示例来介绍拖拽事件功能。 项目描述 本项目通过搭建两个对话框一个作为拖拽信息来源另一个作为拖拽信息目标介绍拖拽事件主要实现了字符串信息的传递并且对拖拽过程的动作进行了探索。 代码结构简介 DragDropWidget类实现了拖拽发起对话框主要是重写了鼠标事件函数用于设置拖拽搭载的信息这里就是一个字符串实际上也可以是自定义的类或者其他对象。代码详见dragdropwidget.h及dragdropwidget.cpp。 AcceptWidget类实现了拖拽接收对话框主要重写了拖拽进入及拖拽放置函数用于处理拖拽进入的信息。代码详见acceptwidget.h及acceptwidget.cpp。 代码详解 dragdropwidget.h #ifndef DRAGDROPWIDGET_H #define DRAGDROPWIDGET_H#include QWidgetclass DragDropWidget : public QWidget {Q_OBJECTpublic:DragDropWidget(QWidget *parent 0);~DragDropWidget();protected:void mousePressEvent(QMouseEvent *event) override;void mouseMoveEvent(QMouseEvent *event) override;void mouseReleaseEvent(QMouseEvent *event) override; private:QPoint m_DragStartPos; };#endif // DRAGDROPWIDGET_H在DragDropWidget 类的头文件中声明了经典鼠标处理三事件并声明了一个成员变量m_DragStartPos用于记录拖拽的起始位置。 dragdropwidget.cpp #include dragdropwidget.h#include QStyle #include QStyleOption #include QIcon #include QDrag #include QMimeData #include QMouseEvent #include QApplication#include QLabel #include QDebugDragDropWidget::DragDropWidget(QWidget *parent): QWidget(parent) {m_DragStartPosQPoint(-1,-1);setWindowTitle(dragwidget); }DragDropWidget::~DragDropWidget() {}void DragDropWidget::mousePressEvent(QMouseEvent *event) {if(event-button()Qt::LeftButton){m_DragStartPosevent-pos();printf(mousepressed\n);} }void DragDropWidget::mouseMoveEvent(QMouseEvent *event) {if (event-buttons() Qt::LeftButton){if(QLineF(event-pos(),m_DragStartPos).length()QApplication::startDragDistance()){printf(distence less\n);return;}printf(process drag\n);QDrag *dragnew QDrag(this);QMimeData *mimedatanew QMimeData;mimedata-setData(localtype,teststr);drag-setMimeData(mimedata);QStyle *style QApplication::style();QStyleOption option;QIcon icon style-standardIcon(QStyle::SP_DialogOpenButton, option, nullptr);QPixmap pixmap icon.pixmap(32, 32);drag-setPixmap(pixmap);drag-setHotSpot(QPoint(10,10));Qt::DropAction dropactiondrag-exec(Qt::CopyAction); //| Qt::MoveAction} }void DragDropWidget::mouseReleaseEvent(QMouseEvent *event) {QWidget::mouseReleaseEvent(event); } 在构造函数中对拖拽起始位置进行了初始化并设置了窗口名称在mousePressEvent函数中判断了是否为左键点击并更新了拖拽起始位置在mouseMoveEvent函数中首先判断拖拽事件中左键是否在移动中保持了点击状态 if (event-buttons() Qt::LeftButton)event-buttons()获取在移动过程中的所有保持点击状态的按钮和Qt::LeftButton做运算用于判断左键是否在这些按钮中据此判断左键是否在移动中保持点击状态 if(QLineF(event-pos(),m_DragStartPos).length()QApplication::startDragDistance())通过判断当前鼠标所在位置与起始拖拽点之间的距离是否超过一定范围来判断拖拽是否有效QApplication::startDragDistance()为10px QDrag *dragnew QDrag(this);QMimeData *mimedatanew QMimeData;首先构造了QDrag及QMimeData对象; mimedata-setData(localtype,teststr);然后对QMimeData对象设置了数据这里setData有两个参数这里用的是通用的数据设置绑定方法第一个参数“localtype”为设置的数据类型这里可以自定义一个字符串作为类型第二个参数即为传递的数据第二个参数的类型为QByteArray也就是说传进来的内容将会被转为QByteArray类型后续在解析时可以将QByteArray还原为传入的类型。 drag-setMimeData(mimedata);这里将QMimeData对象绑定到QDrag对象借助QDrag对象实现数据的传递 QStyle *style QApplication::style();QStyleOption option;QIcon icon style-standardIcon(QStyle::SP_DialogOpenButton, option, nullptr);QPixmap pixmap icon.pixmap(32, 32);drag-setPixmap(pixmap);drag-setHotSpot(QPoint(10,10));这里实际上是对QDrag对象设置一个图标用于在拖拽过程中显示这里使用了qt内置的标准图标setHotSpot函数用于指定拖拽点位于图标的位置 Qt::DropAction dropactiondrag-exec(Qt::CopyAction); 最后执行了QDrag对象的exec函数这里可以指定拖拽动作类型不同的类型会影响后面在接收拖拽时的显示例如Qt::CopyAction在接收拖拽时则会在之前设置的图标右下角显示一个“”号 acceptwidget.h #ifndef ACCEPTWIDGET_H #define ACCEPTWIDGET_H#include QWidgetclass QDragEnterEvent; class QDropEvent;class AcceptWidget : public QWidget {Q_OBJECT public:explicit AcceptWidget(QWidget *parent nullptr); protected:void dragEnterEvent(QDragEnterEvent *event) override;void dropEvent(QDropEvent *event) override;signals:public slots: };#endif // ACCEPTWIDGET_HAcceptWidget 类的头文件中声明了处理接收拖拽事件的dragEnterEvent及dropEvent函数这两个函数是处理接收拖拽事件最基本的两个函数dragEnterEvent用于处理进入本窗口时需要做出的操作例如判断拖拽进入的内容是否需要接受等dropEvent函数用于处理确认接收拖拽事件的操作主要是获取QMimeData acceptwidget.cpp #include acceptwidget.h#include QStyle #include QStyleOption #include QIcon #include QLabel #include QMimeData #include QDropEvent #include QDragEnterEvent #include QApplicationAcceptWidget::AcceptWidget(QWidget *parent) : QWidget(parent) {setWindowTitle(Drop Widget);this-setAcceptDrops(true); }void AcceptWidget::dragEnterEvent(QDragEnterEvent *event) {event-acceptProposedAction();printf(drag enter\n); }void AcceptWidget::dropEvent(QDropEvent *event) {printf(grop enter\n);const QMimeData *mimedata event-mimeData();if(mimedata-hasFormat(localtype)){QByteArray mimestrmimedata-data(localtype);std::string sstrmimestr.toStdString();printf(sstring%s\n,sstr.c_str());QLabel *labelnew QLabel(this);QStyle *style QApplication::style();QStyleOption option;QIcon icon style-standardIcon(QStyle::SP_DialogOpenButton, option, nullptr);QPixmap pixmap icon.pixmap(32, 32);label-setPixmap(pixmap);label-move(event-pos());label-show();} } AcceptWidget 类的源文件主要代码在dropEvent函数中当然首先需要在构造函数中开启接收拖拽事件的标识通过setAcceptDrops(true)来标识本窗口接收拖拽事件 event-acceptProposedAction();在dragEnterEvent函数中确认接受拖拽事件的动作这样拖拽事件才能进入dropEvent函数 const QMimeData *mimedata event-mimeData();在dropEvent函数中直接通过QDropEvent 即可获取拖拽事件传递来的QMimeData 对象 if(mimedata-hasFormat(localtype))首先对传递来的QMimeData 对象进行类型判断使用hasFormat函数这里的类型参数即为拖拽事件产生窗口中设置的参数 QByteArray mimestrmimedata-data(localtype);std::string sstrmimestr.toStdString();首先根据类型从QMimeData 对象中获取QByteArray 格式的数据然后通过转换恢复为原始类型这里传递的是字符串类型最终恢复为字符串类型 QLabel *labelnew QLabel(this);QStyle *style QApplication::style();QStyleOption option;QIcon icon style-standardIcon(QStyle::SP_DialogOpenButton, option, nullptr);QPixmap pixmap icon.pixmap(32, 32);label-setPixmap(pixmap);label-move(event-pos());label-show();后面为了拖拽事件更有趣味在窗口中用Qlabel显示了许多图标。 main.cpp #include QApplication#include dragdropwidget.h #include acceptwidget.hint main(int argc, char *argv[]) {QApplication a(argc, argv);DragDropWidget w;w.show();AcceptWidget aw;aw.move(800,0);aw.show();return a.exec(); } demo.pro QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsTARGET DragDropDemo TEMPLATE appDEFINES QT_DEPRECATED_WARNINGSSOURCES \main.cpp \dragdropwidget.cpp \acceptwidget.cppHEADERS \dragdropwidget.h \acceptwidget.hMOC_DIR ./moc OBJECTS_DIR ./moc
http://www.w-s-a.com/news/901241/

相关文章:

  • 建设网站的目的及功能定位主要包括哪些内容百度关键词优化
  • 开一个小程序要多少钱宁波seo网络推广外包报价
  • 网站备案最新备案号电子商务网站建设的规章制度
  • wordpress制作单页网站导航页面鞍山信息港招聘信息
  • 屏蔽ip地址访问网站自己做衣服的网站
  • 网站建设 域名业务 邮箱哪里有网站建设中心
  • 免费网站赚钱重庆建设摩托车股份有限公司
  • 合肥水运建设工程监理网站自己买服务器能在wordpress建网站
  • wordpress积分商城主题整站seo排名要多少钱
  • 鲜花网站建设的利息分析网站设计与制作专业
  • 深圳网站建设排名做网站的公司高创
  • 杭州哪家做外贸网站全国物流网站有哪些平台
  • 企业网站建设个人博客鞍山晟宇网站建设
  • 广东省自然资源厅网站h5移动端网站模板下载
  • 网站建设和安全管理制度云南九泰建设工程有限公司官方网站
  • 网站的关键词和描述做外贸家纺资料网站
  • 绥化市建设工程网站招投标地址链接怎么生成
  • 网站制作设计发展前景网页链接制作生成二维码
  • 廊坊哪里有制作手机网站的企业网站建设费用财务处理
  • 手机网站建设书籍工商咨询服务
  • 麻花星空影视传媒制作公司网站美食网站网站建设定位
  • 网站的切图是谁来做学会网站 建设
  • 交通局网站建设方案答辩ppt模板免费下载 素材
  • 个人摄影网站推介网手机版
  • 有哪些免费的视频网站网站开发和竞价
  • 学校网站如何做广州商城型网站建设
  • 微网站建设哪家便宜易优建站系统
  • 推荐做木工的视频网站毕业设计做的网站抄袭
  • 网站导航页面制作wordpress调用文章阅读量
  • app小程序网站开发品牌购物网站十大排名