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

相关文章:

  • 2021-07-22
  • 2018-11-27
  • 2021-09-02
  • 2022-01-20
  • 2021-10-04
  • 2021-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-21
  • 2021-10-01
  • 2021-07-05
相关资源
相似解决方案