如果QDataWidgetMapper映射的数据是只读的,如何将QLineEdit设置为只读?

时间:2017-02-26 16:01:37

标签: qt pyqt model-view

我有一个树模型并使用QDataWidgetMapper将模型数据映射到一些小部件。

在模型中,一些数据被标记为只读,因此,我想要做的是让映射的小部件(例如QLineEdit)能够对此标志进行操作,当它指向的模型数据是只读时,将自己设置为只读。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

Qt的QAbstractDataModel界面并未将一段数据的可写性视为属性:您无法读取任何内容以了解是否可以修改某个项目。可以想到一些非一般性的黑客攻击,例如尝试回写项目的当前值以检查它是否可以被更改。它们只是黑客,例如如果新值等于旧值,那么履行Qt规定的合同的模型可能会从true返回setData,即使是只读项目。

如果您使用的是暴露可写性属性的模型,则需要从QDataWidgetMapper派生并自行实现该功能。