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分配给它们。