2017-02-26 9 views
1

私はツリーモデルを持ち、モデルデータをいくつかのウィジェットにマップするためにQDataWidgetMapperを使用します。QDataWidgetMapperでマッピングされたデータが読み込み専用である場合、QLineEditを読み取り専用に設定するにはどうすればよいですか?

モデルの中には、データの一部が読み取り専用であるとフラグが立てられているので、マップされたウィジェット、たとえばQLineEditをこのフラグに基づいて動作させ、それが指し示すモデル・データが読取り専用であるときは読取り専用である。

ご協力いただきましてありがとうございます。

+0

[QDataWidgetMapper.currentIndexChanged](https://doc.qt.io/qt-5/qdatawidgetmapper.html#currentIndexChanged)? – ekhumoro

+0

QDataWidgetMapper自体の興味深い機能のようです... bugtracker上でそれを示唆していますか? – peppe

+0

@peppe誰かがすでにQt 4.8(https://bugreports.qt.io/browse/QTBUG-8409)のバグレポートを提出したと思います。 Qt4からQt5への移行により閉鎖された。私はQtのバグレポートの仕組みに慣れていませんが、時間があればそれを調べます。 –

答えて

0

QtのQAbstractDataModelインターフェイスは、属性としてデータの書き込み可能性を公開しません。アイテムを変更できるかどうかを知るために読むことはありません。変更が可能かどうかを確認するために項目の現在の値を書き戻そうとするなど、非一般的なハッキングを考えることができます。それらはハックです。 Qtが義務付けている契約を満たすモデルは、新しい値が古い値と等しい場合は、をsetDataから読み取り専用項目に戻します。

書き込み可能属性を公開するモデルを使用している場合は、QDataWidgetMapperから派生し、その機能を自分で実装する必要があります。

関連する問題