我正在尝试使用 QLineEdit 输入带有输入掩码的六个数字,但问题是当用户单击行编辑时,光标位置正是您单击的位置。
我正在努力确保它将位置重置为开始。我已经阅读了类似的问题 - 以及对它们的答案 - 但我无法让它工作(其中很多都在 C++ 中,并且因为我缺乏使用它的经验,我无法在 Python 中复制代码)。
我能够安装一个事件过滤器来识别用户何时单击 QLineEdit,并且我能够打印用户单击时设置的光标位置。但是当我尝试手动将其设置为 0 时,它不起作用。好吧,它确实有效,但前提是包含 QLineEdit 的整个应用程序失去焦点并且用户返回它。所以在某种程度上,我正在寻找一种方法来刷新/重绘 Filter 类中的整个应用程序。
class Filter(QObject):
def eventFilter(self, widget, event):
# FocusIn event
if event.type() == QEvent.FocusIn:
print 'focus in'
widget.setCursorPosition(0)
return False
else:
return False
这会将光标位置设置为 0,但在实际应用程序中,它仅在我 Alt+Tab 或整个窗口丢失并再次获得焦点时显示。小部件/窗口的手动重绘()/更新()什么都不做。