如何在 QT 中使用 QSettings 保存自己类的 QList?

拉杜马里乌斯

我的项目是模拟一个像 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Qt中加载和保存qsettings

来自分类Dev

从QSettings恢复QList <bool>

来自分类Dev

如何在Qt中使用QConcurrent类

来自分类Dev

Qt C ++如何使用QList <> :: const_iterator?

来自分类Dev

在 Qt 中,如何使用 QSettings 创建/修改/删除 Windows 注册表项/值?

来自分类Dev

如何在Qt中对QList <QVariant>进行排序?

来自分类Dev

如何创建QList的深层副本(Qt 4.8)

来自分类Dev

使用QSettings保存64位整数

来自分类Dev

使用QSettings保存QSpinBox和QComboBox的组合

来自分类Dev

QList复制构造函数:如何使用变量新建QList <QStandardItem *>

来自分类Dev

如何在自己的类中使用类的实例

来自分类Dev

在C ++ / QT中创建抽象类对象的QList?

来自分类Dev

如何在Qt中使用枚举?

来自分类Dev

如何在Qt中使用垫片

来自分类Dev

如何在Julia中使用Qt

来自分类Dev

如何在Qt中使用STL算法?

来自分类Dev

如何在Qt Creator中使用qmllint?

来自分类Dev

如何在Qt GUI中使用线程

来自分类Dev

OpenGL:如何在Qt中使用glMapBuffer?

来自分类Dev

如何在Qt中使用枚举?

来自分类Dev

如何在Ros中使用Qt库

来自分类Dev

如何在Qt中使用itemFromIndex

来自分类Dev

如何在Qt中使用QUndoCommand

来自分类Dev

如何在Qt GUI中使用线程

来自分类Dev

如何在Qt OpenGL中使用PBO

来自分类Dev

如何在QDateTimeEdit中使用Qt :: SystemLocaleShortDate?

来自分类Dev

如何在Qt中使用图表?

来自分类Dev

如何在QT中使用QFile?

来自分类Dev

如何在不使用任何迭代器的情况下获取Qt中QList的最小值和最大值?