Qt 6中如何将QVariantList作为独立实体追加到另一个QVariantList?
在Qt 6中实现将QVariantList作为独立元素追加的方法
Qt 6为QList新增了右值引用版本的append(QList<T> &&value)重载,该方法会把传入列表的元素逐个移动到当前列表末尾。这就导致Qt 5里直接用containerList.append(subList)将subList作为单个元素加入的代码,在Qt 6中会变成把subList的所有元素展开添加进去。
要恢复Qt 5的预期效果,只需把subList显式包装成QVariant再追加即可——这样编译器会匹配接收QVariant的append重载,而非接收QList的重载:
QVariantList subList; subList.append(QVariant(false)); subList.append(QVariant("a string")); QVariantList containerList; // 显式将subList转为QVariant,作为单个元素添加 containerList.append(QVariant(subList));
处理后,containerList中只会包含1个元素(即整个subList),和Qt 5的行为完全一致。
你也可以用push_back替代append,效果完全相同:
containerList.push_back(QVariant(subList));
内容的提问来源于stack exchange,提问作者Paul Masri-Stone
相关产品推荐
相关产品推荐

