2017-10-11 211 views

回答

2

试试这个:

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

这遍历所有的动态特性,并设置空QVariant值。 如果断言失败比,这是一个Qt的bug,因为documetation说:

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

从Qt的4.2,动态属性可以被添加到并在运行时的QObject从实例中删除。

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

+0

这就是我现在正在做的事情,但烦恼有一个空/无效属性的巨大列表。 –

+0

比它是一个错误,因为文档说你可以删除动态属性,并且没有API接受'setProperty'来删除它。 –

+0

涂料,我没有真正阅读文档的那一部分。我只是假设他们没有离开。 –