C++ 从QObject中删除动态特性

C++ 从QObject中删除动态特性,c++,qt,C++,Qt,有没有办法删除分配给QObject的所有动态属性?试试以下方法: for (auto const &name : object->dynamicPropertyNames()) { object->setProperty(name.constData(), {}); } Q_ASSERT(object->dynamicPropertyNames().empty()); 这将迭代所有动态属性并设置空QVariant值。 如果断言失败,则这是一个Qt错误,因为do

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

试试以下方法:

for (auto const &name : object->dynamicPropertyNames())
{
    object->setProperty(name.constData(), {});
}
Q_ASSERT(object->dynamicPropertyNames().empty());
这将迭代所有动态属性并设置空
QVariant
值。 如果断言失败,则这是一个Qt错误,因为documentation说:

从Qt4.2开始,可以在运行时向QObject实例添加动态属性,也可以从QObject实例中删除动态属性

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


这就是我现在正在做的,但是有一个巨大的空/无效属性列表很烦人。这是一个bug,因为文档说你可以删除动态属性,并且没有API accept
setProperty
来删除它。dope,我实际上没有阅读文档的那部分。我只是假设它们没有消失。是的,只是把无效的QVariant分配给它们。