我的项目是模拟一个像 PacketTracer 这样的“创建 newtorks”应用程序,我希望能够保存项目的状态,所以在关闭并重新运行应用程序后,如果用户想要,一切仍然存在。我使用了 QSetting,其中有一个 SaveSettings() 和一个 LoadSettings() 从按钮的单击插槽调用。我被困在这里:我有一个名为 switch_List 的 QList switch_class,我想做类似的事情:在 Save Settings() 中:
QSettings setting("myorganization","blabla");
setting.setValue("list_of_switch_objects",switch_List);//cannot convert from
// QList<switch_list> to const QVariant .
任何建议,将不胜感激 !
QSettings::setValue()需要一个QVariant参数。所以你必须将你的转换QList
为 aQVariant
或 a QVariantList
。
有关可能的解决方案,请参阅此线程的已接受答案:
template <typename T>
QVariantList toVariantList( const QList<T> &list )
{
QVariantList newList;
foreach( const T &item, list )
newList << item;
return newList;
}
或者,您可以在 Qt doc 上找到一些有趣的代码,可以帮助您执行转换:
QList<int> intList = {7, 11, 42};
QVariant variant = QVariant::fromValue(intList);
if (variant.canConvert<QVariantList>()) {
QSequentialIterable iterable = variant.value<QSequentialIterable>();
// Can use foreach:
foreach (const QVariant &v, iterable) {
qDebug() << v;
}
// Can use C++11 range-for:
for (const QVariant &v : iterable) {
qDebug() << v;
}
// Can use iterators:
QSequentialIterable::const_iterator it = iterable.begin();
const QSequentialIterable::const_iterator end = iterable.end();
for ( ; it != end; ++it) {
qDebug() << *it;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句