从 QObject 中删除动态属性

Remove dynamic properties from QObject

本文关键字:动态 属性 删除 QObject      更新时间:2023-10-16

有没有办法删除分配给QObject的所有动态属性?

试试这个:

for (auto const &name : object->dynamicPropertyNames())
{
    object->setProperty(name.constData(), {});
}
Q_ASSERT(object->dynamicPropertyNames().empty());

这将循环访问所有动态属性并设置空QVariant值。如果断言失败,那么这是一个Qt错误,因为文档说:

http://doc.qt.io/qt-5/qobject.html#dynamic-properties

从Qt 4.2开始,可以在运行时向QObject实例添加和删除动态属性。

动态属性...可以通过将属性值设置为无效QVariant来删除。