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表明该属性不会被派生类中重写

相关文章推荐

Qt之QSS(QDarkStyleSheet)

简述关于样式,前面介绍了很多内容,下面分享一个深色样式。简述 效果图 QSS 更多参考 效果图QSS/* * The MIT License (MIT) * * Copyright (c) ...

利用stylesheet设置Q_PROPERTY

如果在程序里面使用Q_PROPERTY设置的属性,可以在qss里面使用:qproperty-的形式来访问并设置值。如:MyLabel { qproperty-pixmap: url(pixmap.pn...

正则表达式

引言        正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 'a...

Qt之自定义属性Q_PROPERTY

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

实现QT与HTML页面通信

1.  前言 最近,C++和WEB本地混合应用开发模式逐渐流行起来,个人也认为标记语言描述的界面是界面开发的一个发展趋势。WPF、Java FX,当然也少不了Html。基于Html的界面在开发效率,可...

Qt之QSS(样式表语法)

简述Qt样式表的术语和语法规则几乎和CSS相同。如果你熟悉CSS,可以快速浏览以下内容。简述 样式规则 选择器类型 子控件 伪选择器 冲突解决方案 级联 继承 命名空间中的部件 设置对象属性 更多参考...

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

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

Qt之QSS(黑色炫酷)

简述Qt助手中有关于各种部件的QSS详细讲解,资源很丰富,请参考:Qt Style Sheets Examples。之前博客中分享了很多关于Qt的样式效果,几乎都是基下面这个样式 - 黑色炫酷,一款...

Qt之保持GUI响应

简述Qter们经常遇到由于耗时操作造成GUI阻塞的问题。其实,这个问题并不难克服,可以采用许多不同的方式,下面我会列举一些提可选范围,可以根据使用情况进行处理。简述 执行长时间操作 手动事件处理 使用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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