假设我有一个如下所示的类:
class Something : QObject {
Q_PROPERTY(int something READ getSomething NOTIFY somethingChanged)
// ...
signals:
void somethingChanged();
}
根据文档,声明somethingChanged
as void somethingChanged()
and void somethingChanged(int)
(注意参数)都是有效的。为什么我想用一种方式而不是另一种方式来做呢?
发出该值允许您使用该值,而无需引用该值所属的对象。这就是 C++ API 中通常的完成方式,这使您不必手动保留对对象的引用,以便您可以在更改通知时读入值。请注意,即使这样,您也可以使用QObject::sender()
必要时查找发送者对象,但发出值更简单。
在 QML 中,您最终使用的大部分时间是绑定,它非常快速且功能强大,并且涉及对对象的引用,并且更改通知会导致引用属性的绑定表达式自动重新计算。因此没有必要发出实际值。
没有什么可以阻止您两全其美。发出新值的通知信号似乎与 QML 绑定配合得很好。所以如果由于某种原因你need发出一个值,不要回避它,它不会危及 QML 兼容性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)