PyQt5学习(三)拖拽功能QDrag

PyQt5学习(三)拖拽功能QDrag
为⽤户提供拖拽功能很直观,在很多桌⾯应⽤程序中,复制和移动对象都可以通过拖拽来完成
基于MIME类型的拖曳数据传输是基于QDrag类的,QMimeData对象将关联的数据与其对应的MIME类型相关联
MIME意为多功能Internet邮件扩展,它设计的最初⽬的是为了在发送电⼦邮件时附加多媒体数据,让邮件客户程序能根据其类型进⾏处理。然⽽当它被HTTP协议⽀持每个MIME类型由两部分组成,前⾯是数据的⼤类别,例如声⾳audio、图象image等,后⾯定义具体的种类。
常见的MIME类型(通⽤型):
超⽂本标记语⾔⽂本 .html text/html
xml⽂档 .xml text/xml
XHTML⽂档 .xhtml application/xhtml+xml
普通⽂本 .txt text/plain
RTF⽂本 .rtf application/rtf
PDF⽂档 .pdf application/pdf
Microsoft Word⽂件 .word application/msword
PNG图像 .png image/png
压延膜GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声⾳⽂件 .au audio/basic
MIDI⾳乐⽂件 mid,.midi audio/midi,audio/x-midi
RealAudio⾳乐⽂件 .ra, .ram audio/x-pn-realaudio
微波感应模块
MPEG⽂件 .mpg,.mpeg video/mpeg
AVI⽂件 .avi video/x-msvideo
GZIP⽂件 .gz application/x-gzip
TAR⽂件 .tar application/x-tar
任意的⼆进制数据 application/octet-stream
MIME类型的数据可以简单的理解为互联⽹上的各种资源,⽐如⽂本,⾳频和图⽚等资源,互联⽹上的每⼀种资源都属于⼀种MIME类型的数据复合膜
许多QWideget对象都⽀持拖拽动作,允许拖拽数据的控件必须设置Qwidget.setDragEnabled()为True,另外,控件应该相应拖拽时间。
以存储所拖拽的数据
事件描述
DragEnterEvent 当执⾏⼀个拖拽控件操作,并且⿏标指针进⼊该控件时,这个事件将会被触动,这个事件中可以获得被操作的窗⼝的控件,还可以有条件的接受或拒绝该拖拽操作
DragMoveEvent
在拖拽操作进⾏时会触发该事件
DragLeaveEvent 当执⾏⼀个拖拽操作,并且⿏标指针离开该控件时,这个事件被触发
DropEvent当拖拽操作在其⽬标控件上呗释放时,这个事件被触发
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Combo(QComboBox):
def __init__(self,title,parent):
super(Combo, self).__init__(parent)
#设置为可接受拖曳操作⽂本
self.setAcceptDrops(True)
#当执⾏⼀个拖曳控件操作,并且⿏标指针进⼊该控件时,这个事件将会被触发。    # 在这个事件中可以获得被操作的窗⼝控件,还可以有条件地接受或拒绝该拖曳操作    def dragEnterEvent(self,e):
#检测拖曳进来的数据是否包含⽂本,如有则接受,⽆则忽略
混凝土砌块成型机if e.mimeData().hasText():
e.accept()
else:
e.ignore()
#当拖曳操作在其⽬标控件上被释放时,这个事件将被触发
消毒干衣机
def dropEvent(self,e):
#添加拖曳⽂本到条⽬中
self.addItem(e.mimeData().text())
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
#表单布局,添加控件
lo=QFormLayout()
lo.addRow(QLabel('请把左边的⽂本拖曳到右边的下拉菜单中'))
#实例化单⾏⽂本框,设置为允许拖曳操作
edit=QLineEdit()
edit.setDragEnabled(True)
#实例化Combo对象,添加控件到布局中
com=Combo('Button',self)
lo.addRow(edit,com)
#设置主窗⼝布局及标题
self.setLayout(lo)
self.setWindowTitle('简单的拖曳例⼦')
if __name__ == '__main__':
app=QApplication(sys.argv)
卫星星历
ex=Example()
ex.show()
<_())

本文发布于:2024-09-22 08:22:06,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/184906.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   控件   拖曳   事件   操作   邮件   类型
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议