c语言null和undefined,javascript – QML和C中的Null和Undefined

你的答案肯定在正确的轨道上,但这里有更多的信息.

写入属性时会发生什么取决于该属性是什么,例如,它是否是QObject属性?根据属性的类型,您也可能在赋值时遇到错误(例如,如果您将null写入数字类型属性,如double).

让我们假设,为了你在QObject上设置属性的答案.如果属性具有为Q_PROPERTY定义的RESET函数,则可以将其设置为undefined. Quoting the documentation:

A RESET function is optional. It is for setting the property back to its context specific default value. e.g., QWidget::cursor has the typical READ and WRITE functions, QWidget::cursor() and QWidget::setCursor(), and it also has a RESET function, QWidget::unsetCursor(), since no call to QWidget::setCursor() can mean reset to the context specific cursor. The RESET function must return void and take no parameters.

更具体地说,如果你有一个具有RESET函数的Q_PROPERTY,那么当你将undefined写入该属性时,the RESET function will be called.

为了将属性设置为null,答案位于最后一个引用的正上方,基本上,如果属性包含QObject *派生类型,it will store a nullptr.

你问的最后一种情况是为C端的属性赋值null.出于意图和目的,我假设你在问这样一个案例:

Q_PROPERTY(QObjectDerived* myThing READ myThing NOTIFY myThingChanged);

...

QObjectDerived *myThing() { return m_myThing; }

...

void somethingElse() {

m_myThing = 0; // or NULL, nullptr, whatever floats your boat

emit myThingChanged();

}

在这种情况下,此属性的QML端(myInstanceId.myThing)将从内存中以null结尾.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值