问题

如标题所示,在重写了QPlainTextEdit的拖放方法后,发现拖放文件后光标就不动了,但编辑功能正常,就很奇怪,虽然不会报bug,但很影响使用,文档里翻了半天没有找到问题,换了个搜索姿势后找到了和我遇到相同问题的人,并且解决方法也很奇特。

解决方法

方法来自:PyQt5 QTextEdit重写dropEvent方法后拖入文件光标不动的问题
问题出在重写的dropEvent方法上,只需要加一句super().dropEvent(event)重新继承方法即可。

class MyQPlainTextEdit(QPlainTextEdit):
    """实现文件拖放功能"""

    def __init__(self, parent=None):
        super().__init__(parent)
        self.setAcceptDrops(True)

    def dragEnterEvent(self, e):
        if e.mimeData().text().endswith('.srt'):
            e.accept()
        else:
            e.ignore()

    def dropEvent(self, e):
        path = e.mimeData().text().replace('file:///', '')
        super().dropEvent(e) # 加这一句即可
        self.setPlainText(path)
最后修改:2021 年 01 月 26 日
你的赞赏是我前进的动力