0

我在这个奇怪的问题上遇到了困难。我在我的项目中放置了一些 QLineEdit 小部件,并尝试通过单击它们来选择(突出显示)它们的所有文本。我已经有了这个工作,但后来我想将此功能扩展到同一 QLineEdit 父级的另一个类。我做了这个小界面:

class EditInterface(QtGui.QLineEdit):
    def __init__(self, parent):
        super(EditInterface, self).__init__(parent)
        self.focus = False
        self.setFocusPolicy(QtCore.Qt.StrongFocus)

    def mousePressEvent(self, event):
        ret = QtGui.QLineEdit.mousePressEvent(self, event)
        if not self.focus:
            self.selectAll()
            self.focus=True
        else:
            self.deselect()
        return ret

    def focusInEvent(self,event):
        self.focus=True
        return QtGui.QLineEdit.focusInEvent(self,event)

    def focusOutEvent(self,event):
        self.focus=False
        return QtGui.QLineEdit.focusOutEvent(self,event)

现在它根本不起作用。如果我只是这样做:

def mousePressEvent(self, event):
    ret = QtGui.QLineEdit.mousePressEvent(self, event)
    self.selectAll()
    return ret

然后它工作正常,但我希望它能够启用其他鼠标活动,而不是一遍又一遍地选择所有内容。问题似乎出在 self.focus 变量上,但我没有使用 python 的经验,也不知道发生了什么。其他一切都在我的项目中运行良好,所以我将跳过在这里发布。提前致谢

编辑:我发现问题 根本不是关于继承,而是关于事件。focusInEvent 在 mousePressEvent 之前调用,因此不可能调用 selectAll()。

4

0 回答 0