简述
Qt提供一个复杂属性系统,类似于其它编译器供应商所提供的(Property System)。然而,作为一个与编译器和平台无关的库,Qt不依赖于那些非标准的编译器特性,如:_property或[property]。Qt的解决方案适用于Qt支持平台下的任何标准C++编译器。它基于元对象系统(Meta Object Sytstem),也通过信号和槽提供对象间通讯机制。
Q_PROPERTY(type name
READ getFunction
[WRITE setFunction]
[RESET resetFunction]
[NOTIFY notifySignal]
[REVISION int]
[DESIGNABLE bool]
[SCRIPTABLE bool]
[STORED bool]
[USER bool]
[CONSTANT]
[FINAL])
下面是一些典型的声明属性的示例:
Q_PROPERTY(bool focus READ hasFocus)
Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
Q_PROPERTY(QCursor cursor READ cursor WRITE setCursor RESET unsetCursor)
一个属性的行为就像一个类的数据成员,但它有通过元对象系统访问的附加特性。
- 如果没有指定MEMBER关键字,则需要一个READ访问函数。用于读取属性值。理想的情况下,一个con