zoukankan      html  css  js  c++  java
  • 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_())

    
    
  • 相关阅读:
    C++自定义异常类
    上下栏固定, 中间滚动的HTML模板
    C# 代理应用
    C# 对象池的实现(能限制最大实例数量,类似于WCF的MaxInstanceCount功能)
    半同步半异步模式的实现
    EventBus实现
    C Socket初探
    C Socket初探
    VC++全屏
    MFC 坦克定位
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/12293842.html
Copyright © 2011-2022 走看看