从QObject中删除动态属性

时间:2017-10-11 14:58:09

标签: c++ qt

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

1 个答案:

答案 0 :(得分:3)

试试这个:

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来删除动态属性....