PyQt - 添加阻力&放到小部件

时间:2017-06-02 13:31:35

标签: python pyqt pyqt5

我有一个继承自QWidget的类:

from PyQt5.QtWidgets import *


class Widget(QWidget):
    def __init__(self, layoutname: str, width: int, height: int ) -> None:
        """
        Constructor, pass 0 to width and/or height if you want them to be defaults given at runtime
        :param layoutname: Layout, a Layout object will be built according to the class name passed
        :param width: int,  width of the widget
        :param height: int, height of the widget
        """
        super(QWidget, self).__init__()

    if width != 0:
        self.setFixedWidth(width)

    if height != 0:
        self.setFixedHeight(height)

    layout = layoutname()
    self.setLayout(layout)


def addChild(self, child: object)-> None:
    """
    Adds child as a child to the widget
    :param child: Widget, the child you want to add to the current widget
    """
    self.layout().addWidget(child)

def droppedR(self):
    print("DROPPED")

我想添加以下功能:当在窗口小部件上删除某些内容(比如文件)时,我想调用droppedR()。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我不确定它是否能完全回答你的想法,但我之前在使用dragDrop时遇到了一些问题,也许我花了很长时间的这个问题和答案可以帮助你here

总结一下,主要推理是:

  1. 使用accept()acceptProposedAction()方法接受dragDrop事件
  2. 重新实施dragEnterEvent dragMoveEventdropEvent
  3. 在这些方法中你应该做你想做的事。例如,在dropEvent方法中调用您的droppedR方法。
  4. 由您决定要在每个事件中应用的逻辑。