Установите QLineEdit на «Только чтение», но все еще принимайте капли - PullRequest
1 голос
/ 01 февраля 2020

Я заметил, что когда я устанавливаю 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])

1 Ответ

2 голосов
/ 01 февраля 2020

Метод dragEnterEvent, который позволяет вам включить dropEvent, который в случае QLineEdit по умолчанию не принимает событие, когда QLineEdit имеет значение readOnly. Решение состоит в том, чтобы переопределить этот метод и принять событие.

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])

Для получения дополнительной информации проверьте Перетащите документацию .

...