讓控件支持拖拽動作
A.setDragEnable(True) 設置A可以拖動
B.setAcceptDrops(True) 設置B可以接受拖動
B需要滿足兩個事件
1.dragEnterEvent 將A拖到B觸發
2.dropEvent 在B的區域放下A時發生觸發
具體實現代碼如下所示:
import sys,math
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class MyComboBox(QComboBox):
def __init__(self):
super(MyComboBox,self).__init__()
self.setAcceptDrops(True) #設置可以接受拖動
def dragEnterEvent(self,e):
print(e)
if e.mimeData().hasText():
e.accept()
else:
e.ignore()
def dropEvent(self, e):
self.addItem(e.mimeData().text())
class Dragdomo(QWidget):
def __init__(self):
super(Dragdomo,self).__init__()
formlayout=QFormLayout()
formlayout.addRow(QLabel("將左邊的文本拖動到右邊"))
lineEdit=QLineEdit()
lineEdit.setDragEnabled(True) #設置可以被拖動
combo=MyComboBox()
formlayout.addRow(lineEdit,combo)
self.setLayout(formlayout)
self.setWindowTitle("拖動案例")
if __name__=="__main__":
app=QApplication(sys.argv)
p=Dragdomo()
p.show()
sys.exit(app.exec_())