我将 QDoubleSpinBox 子类化以添加一些功能(例如根据 lineedit 中光标的位置增加值)并更改一些我觉得烦人的功能。后者之一是发出中间值:例如,如果您想输入值 323,它将发出 3,然后是 32,最后是 323。我想将其设置为仅在输入时发出(即仅在输入时实际更改值)。
无论如何,我不知道如何捕捉这些中间编辑。我覆盖了 setValue 以查看是否可以以某种方式将其停止,但显然没有调用它(或者至少没有调用我的覆盖)。我不确定在行编辑中编辑时该值是如何设置的。
更一般地说,这个盒子的逻辑让我无法理解。是否有一些文档解释了例如“如果您在 lineedit 中键入一个数字,则调用这一系列例程......而如果您点击向上箭头,则调用这一系列例程?”
万一这很重要,我正在使用 PyQt5
编辑:这是另一种情况,其中访问它很重要。假设我想为盒子实现一个撤消/重做结构。我能想到的访问更改值的唯一方法是连接到 valueChanged 信号。但是,如果我对盒子进行子类化,那么收听信号而不是仅仅观察“内部”的值变化似乎有点令人费解,或者我在这里遗漏了什么?