**Q_PROPERTY()**是一个宏,用来在一个类中声明一个属性property,由于该宏是qt特有的,需要用moc进行编译,故必须继承于QObject类。
Q_PROPERTY(type name READ getFunction [WRITE setFunction] [RESET resetFunction] [NOTIFY notifySignal] [DESIGNABLE bool] [SCRIPTABLE bool] [STORED bool] [USER bool] [CONSTANT] [FINAL])
-
必须有一个read函数。它用来读取属性值。因此用Const限定。它的返回值类型必须为属性类型或者属性类型的引用或者指针。不能是其他类型例如:QWidget::hasFocus().
-
有一个可选的write函数。它用来设置属性值,它的返回值必须为void型,而起必须要含有一个参数。例如:QWidget::setEnabled()
-
一个reset函数能够把property设置成其默认状态,它也是可选的。复位功能必须返回void,并且不带参数,
-
一个NOTIFY信号是可选的 。如果定义,它提供了一个信号这个信号在值发生改变时会自动被触发。
-
如果定义了"STODE"属性表明这是一直存在的。QWidget::minimumSize()
-
一个"DESIGNABLE"属性表明该property能在GUI builder(一般为Qt Designer)可见
-
USER 属性 表面是否可以被用户所编辑
-
CONST设定属性是不可修改的 所以不能跟WRITE或者NOTIFY同时出现
-
FINAL表明该属性不会被派生类中重写
类型,属性名和READ(读)方法是必须的
需要对里面的方法进行定义
//定义一个bool类型的变量isChecked,读取变量的方法是getChecked,写变量的方法是setChecked
Q_PROPERTY(bool isChecked READ getChecked WRITE setChecked)
bool ImageSwitch::getChecked() const
{
return isChecked;
}
void ImageSwitch::setChecked(bool a) const
{
isChecked = a;
}