Qt拖放功能
2018-06-17 23:49:27来源:未知 阅读 ()
mytextedit.h:
1 #ifndef MYTEXTEDIT_H 2 #define MYTEXTEDIT_H 3 4 #include <QTextEdit> 5 #include "ui_mytextedit.h" 6 #include <QUrl> 7 #include <QDropEvent> 8 #include <QMimeData> 9 #include <QString> 10 #include <QDragEnterEvent> 11 12 class MyTextEdit : public QTextEdit 13 { 14 Q_OBJECT 15 16 public: 17 MyTextEdit(QWidget *parent = 0); 18 ~MyTextEdit(); 19 20 //void dragEnterEvent(QDragEnterEvent *event); 21 void dropEvent(QDropEvent *event); 22 23 private: 24 Ui::MyTextEdit ui; 25 }; 26 27 #endif // MYTEXTEDIT_H
mytextedit.cpp:
1 #include "mytextedit.h" 2 3 MyTextEdit::MyTextEdit(QWidget *parent) 4 : QTextEdit(parent) 5 { 6 ui.setupUi(this); 7 } 8 9 MyTextEdit::~MyTextEdit() 10 { 11 12 } 13 14 void MyTextEdit::dropEvent(QDropEvent *event) 15 { 16 QList<QUrl> urls = event->mimeData()->urls(); 17 if (urls.isEmpty()) 18 { 19 return; 20 } 21 22 //QUrl url = urls.back(); 23 foreach(QUrl url, urls) 24 { 25 QString file_name = url.toLocalFile(); 26 this->append(file_name); 27 } 28 } 29 30 //void MyTextEdit::dragEnterEvent(QDragEnterEvent *event) 31 //{ 32 // if (event->mimeData()->hasFormat("text/uri-list")) 33 // event->acceptProposedAction(); 34 //}
上面为实现拖放文件,显示文件路径的自定义class MyTextEdit,发现函数void MyTextEdit::dragEnterEvent(QDragEnterEvent *event)注释掉但是功能没有影响,
将MyTextEdit文本框类去掉,换成QWidget类时,发现当把一个对象拖动到这个QWidget窗体上时,就会调用dragEnterEvent(),如果这个事件调用了acceptProposedAction(),就表明可以在这个窗体上拖放对象,
默认情况下窗口部件是不接受拖动的,因此,如果注释掉dragEnterEvent()函数,QWidget类上就不能实现拖放功能,qt会自动改变光标向用户说明这个窗口部件不是有效的放下点。重要的是,要在QWidget类上实现拖放,
首先需要设置setAcceptDrops(true)来接受放下事件。
如果想要在图形组件上启用拖放功能,可以使用QWidget上的setAcceptDrops()方法,设定组件接受拖放动作,在拖放动作发生时,会有相应的QDragEnterEvent、QDragMoveEvent、QDragLeaveEvent与QDropEvent等事件发生,可以重新定义dragEnterEvent()、dragMoveEvent()、dragLeaveEvent()、dropEvent()等事件处理,以处理相应的拖放事件,一般使用dragEnterEvent()和dropEvent()。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:C++ 简单的任务队列
下一篇:C++中的STL中map用法详解
- 设计一个多功能的MyTime类 代码参考 2020-03-29
- QCustomplot使用分享(九) 绘制图表-多功能游标 2019-10-28
- 李超线段树 2019-08-16
- FFmpeg4.0笔记:封装ffmpeg的解封装功能类CDemux 2019-08-16
- mongols的反向代理和负载均衡功能 2019-01-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash