将 QLineEdit 设置为只读但仍接受掉落

Set QLineEdit to Read-Only but still Accept Drops

我注意到当我将 QLineEdit 设置为只读时,这不允许我的小部件接受掉落。

class CustomLineEdit(QtGui.QLineEdit):
    def __init__(self):
        super(CustomLineEdit, self).__init__()
        self.setReadOnly(True)
        self.setAcceptDrops(True)


    def dropEvent(self, event):
        input_text = event.mimeData().text()
        if input_text.endswith('Stalk'):
            self.setText(input_text.split(' ')[0])

允许您启用 dropEvent 的 dragEnterEvent 方法,在 QLineEdit 的情况下默认情况下不接受当 QLineEdit 为只读时的事件。解决方案是覆盖该方法并接受事件。

class CustomLineEdit(QtGui.QLineEdit):
    def __init__(self):
        super(CustomLineEdit, self).__init__()
        self.setReadOnly(True)
        self.setAcceptDrops(True)

    <b>def dragEnterEvent(self, event):
        event.acceptProposedAction()</b>

    def dropEvent(self, event):
        input_text = event.mimeData().text()
        if input_text.endswith("Stalk"):
            values = input_text.split(" ")
            if values:
                self.setText(values[0])

有关详细信息,请查看 Drag-and-drop documentation