PyQt5 控件拖拽


讓控件支持拖拽動作
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_())


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM