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



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

在模型中,一些数据被标记为只读,所以,我想做的是让映射的小部件,比如一个QLineEdit,能够作用于这个标志,并在它指向的模型数据是只读时将自己设置为只读。

任何帮助不胜感激!

Qt的QAbstractDataModel接口不会将一段数据的可写性公开为属性:您无法阅读任何内容来了解项目是否可以修改。人们可以想到一些非通用的黑客,例如尝试写回项目的当前值以检查是否可以更改。它们只是黑客,例如,如果新值等于旧值,则履行Qt规定的合同的模型可能会从setData返回true,即使是只读项目。

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

相关内容

最新更新