Qt のオブジェクトシステム( QObject と関連クラス)にはプロパティのシステムが用意されています。C++ だけを使用してプログラムするときには意識する必要はほとんどありませんが、Qt Script や Qt WebKit、QML などが C++ と連携する場合には非常に重要な仕組みです。この記事では Qt のプロパティシステムと、Qt 5.1 で追加される MEMBER 指定子について簡単に説明します。
プロパティとは
まず、プロパティとは何でしょうか。プロパティはオブジェクトの属性のことです。例えば、QWidget であればその幅( width )や高さ( height )、QLabel であればその文字列( text )などがプロパティになります。
C++ ではそれらのプロパティの値は getter と呼ばれる関数を通じて取得し、setter と呼ばれる関数で設定します。先ほどの QLabel の場合、QLabel::text() が getter で、QLabel::setText() が setter になります。このように C++ ではメンバー関数を通じて利用するために getter で取得する値がプロパティかどうかは意識することはまずありませんが、たとえば QML でアクセスする場合には getter / setter はエンジン側で自動的に使用され、ユーザーからはプロパティは変数のように見えます。