Q_PROPERTY 介绍 .

转载 2012年03月22日 16:23:27

QT提供了一个成熟的属性系统,但是作为一个跨平台的且与编译器无关的库,qt不依赖于非标准的编译器功能例如 __property or [property];

QT的强大之处在于它可以支持任何标准的c++编译器。 QT是基于 Meta-Object System(元对象)和signals and slots(信号槽)的.

Q_PROPERTY

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])


可能还不太好理解 不过下面介绍几个特殊的例子你就豁然开朗了

 Q_PROPERTY(bool focus READ hasFocus)
Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)  
Q_PROPERTY(QCursor cursor READ cursor WRITE setCursor RESET unsetCursor)



一个属性行为类似于类里面的数据成员,但是他是却可以通过Meta-Object System来访问。
  
在外界看来,property跟类中数据成员没有什么区别,但是还是有几点不一样,参考qt文档,主要有以下几点:
1.必须有一个read函数。它用来读取属性值。因此用Const限定。它的返回值类型必须为属性类型或者属性类型的引用或者指针。不能是其他类型例如:QWidget::hasFocus().  
2.有一个可选的write函数。它用来设置属性值,它的返回值必须为void型,而起必须要含有一个参数。例如:QWidget::setEnabled()
3.一个reset函数能够把property设置成其默认状态,它也是可选的。复位功能必须返回void,并且不带参数,

4.一个NOTIFY信号是可选的 。如果定义,它提供了一个信号这个信号在值发生改变时会自动被触发。

5.如果定义了"STODE"属性表明这是一直存在的。QWidget::minimumSize()
6.一个"DESIGNABLE"属性表明该property能在GUI builder(一般为Qt Designer)可见

7.USER 属性 表面是否可以被用户所编辑

8 CONST设定属性是不可修改的 所以不能跟WRITE或者NOTIFY同时出现

9FINAL表明该属性不会被派生类中重写

传说中的Q_PROPERTY怎么使用

 Q_PROPERTY在QT中应用是非常广泛的,而且比较好用。 这里看一下Q_PROPERTY的构成: Q_PROPERTY(type name   02. READ  getFunct...

Q_PROPERTY

简述:Q_PROPERTY() 是一个宏,用来在一个类中声明一个属性property,由于该宏是qt特有的,需要用moc进行编译,故必须继承于QObject类。 1、Q_PROPER...
  • hebbely
  • hebbely
  • 2017年03月28日 15:18
  • 564

Qt之QSS(Q_PROPERTY-原始属性)

简述在Qt之QSS(样式表语法)一节讲过关于“设置对象属性”的用法,里面有一条很重要的原则是:任何可被识别的Q_PROPERTY都可以使用qproperty-语法设置。这里需要对Qt属性系统有一定的了...

Qt之QSS(Q_PROPERTY-自定义属性)

简述在Qt之QSS(Q_PROPERTY-原始属性)一节我们分享了Q_PROPERTY-原始属性的用法,但通常情况下我们需要很多自定义样式,例如:动态获取QSS样式,这时自定义属性就能很好的发挥其用武...

Qt中Q_PROPERTY定义属性以及属性的使用

[cpp] view plaincopy Q_PROPERTY(type name    READ  getFunction  //属性名   [WRITE setF...

Qt之自定义属性Q_PROPERTY

QT提供了一个成熟的属性系统,但是作为一个跨平台的且与编译器无关的库,qt不依赖于非标准的编译器功能例如 __property or [property]; QT的强大之处在于它可以支持任何标准的c...

Qt之Q_PROPERTY宏定义

看到一些qt的程序在使用Q_PROPERTY()宏,参考了一下qt文档,发现定义格式如下: Q_PROPERTY(type name            READ getFunction   ...

QT中的Q_PROPERTY()宏

看到一些qt的程序在使用Q_PROPERTY()宏,参考了一下qt文档,发现定义格式如下: Q_PROPERTY(type name READ getFunction ...

Q_PROPERTY

看到一些qt的程序在使用Q_PROPERTY()宏,参考了一下qt文档,发现定义格式如下:Q_PROPERTY(type name           READ getFunction        ...
  • bbjjqq
  • bbjjqq
  • 2010年11月18日 14:09
  • 6291

Q_PROPERTY

Q_PROPERTY(type name            (READ getFunction [WRITE setFunction] |             MEMBER memberN...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Q_PROPERTY 介绍 .
举报原因:
原因补充:

(最多只允许输入30个字)