我有一个自定义模型和一个使用qLineEdit的自定义委托。编辑完成后,我可以更新模型。唯一的问题是我想触发
def setModelData(self, editor, model, index):
model.setData(index, editor.text())
当触发lineEdit的textChanged时,任何用户输入的数据都会被立即更新。
我可以截获textChanged信号,但是如何获取model
参数,以便可以将其传递给setModelData
?我可以从发送者访问editor
,并且index
可以用编辑器存储。
或者,是否有一个我可以触发的信号,即使编辑器仍处于打开状态,它也会告诉视图从编辑器更新模型?
干杯。
正如titusjan所说,commitData
可以呼叫setModelData
。(由于这个问题,我本来可以很早就知道这一点。)
其他提示(操作系统:Windows 10):
[使编辑无效(尽管编辑文本。)并关闭编辑器。:Esc键。
在keyPressEvent
中,通过子类化编辑器来执行:提交数据并关闭编辑器:提交commitData并同时调用editor.clearFocus()
(例如,通过ReturnKey或其他方式,因为我的编辑器是单行编辑器。)。我认为您不能仅通过[ C0]。
一旦commitData()
,打电话给editor.clearFocus()
会使我们回到同一位置。我想知道是否有人需要这个问题。
开始编辑(例如,keyReturn)以调用editor.setFocus()
。
此问题仅通过评论即可完成,但是非常有帮助。