PyQt触发器setModelData on自定义委托中的textChanged

问题描述 投票:1回答:1

我有一个自定义模型和一个使用qLineEdit的自定义委托。编辑完成后,我可以更新模型。唯一的问题是我想触发

    def setModelData(self, editor, model, index):
        model.setData(index, editor.text())

当触发lineEdit的textChanged时,任何用户输入的数据都会被立即更新。

我可以截获textChanged信号,但是如何获取model参数,以便可以将其传递给setModelData?我可以从发送者访问editor,并且index可以用编辑器存储。

或者,是否有一个我可以触发的信号,即使编辑器仍处于打开状态,它也会告诉视图从编辑器更新模型?

干杯。

qt pyqt
1个回答
0
投票

正如titusjan所说,commitData可以呼叫setModelData。(由于这个问题,我本来可以很早就知道这一点。)

其他提示(操作系统:Windows 10):

[使编辑无效(尽管编辑文本。)并关闭编辑器。:Esc键。

keyPressEvent中,通过子类化编辑器来执行:提交数据并关闭编辑器:提交commitData并同时调用editor.clearFocus()(例如,通过ReturnKey或其他方式,因为我的编辑器是单行编辑器。)。我认为您不能仅通过[ C0]。

一旦commitData(),打电话给editor.clearFocus()会使我们回到同一位置。我想知道是否有人需要这个问题。

开始编辑(例如,keyReturn)以调用editor.setFocus()

此问题仅通过评论即可完成,但是非常有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.