关于Qt属性的问题

时间:2016-12-18 18:51:26

标签: c++ qt raspberry-pi2

我想为Raspberry PI 2(Linux / Raspbian)开发相对简单的基于对话框的GUI,这就是为什么要从基本/核心功能开始研究Qt的原因。 RTFM,我知道。所以我read one of them,说实话,很少了解。

  1. 我头脑中最大的问题:为什么首先值得一读? Qt属性的目的是什么?它们有什么用处?
  2. 他们如何在内部工作,从编写代码的角度来看。
  3. 内存和性能成本是多少?有必要使用它们吗?如果不是,考虑我的用例,是否值得使用它们?

1 个答案:

答案 0 :(得分:2)

  1. 属性用于通过标准通用接口读取/写入对象中的值。需要与脚本引擎(QtScript或QtQml),小部件设计器,远程对象接口(QtDBus,QtRemoteObjects,QtWebChannel)连接。

  2. 大多数属性通过普通的getter / setter函数实现,然后将这些函数绑定到属性名称并使用Q_PROPERTY宏向属性系统注册。或者,属性名称可以绑定到成员变量。使用通用property()setProperty() API的读/写访问权限被重新路由到已注册的getter / setter或已注册的成员变量的调用。

  3. 属性信息在课程中存储为QMetaProperty' staticMetaObject,通过属性API访问将根据属性名称进行查找。 您的用例似乎不需要使用属性。

  4. Kuba在评论中提到的另一个用例是将数据附加到基于QObject的对象而不修改它们。

    这些属性,即所谓的&#34;动态属性&#34;,处理方式略有不同。它们存储在通用内部存储中,而不是getter / setter函数或成员变量,目前是QVector<QVariant>