Save QList<int> to QSettings

橙三吉。 提交于 2019-11-28 21:30:47
chalup

QSettings::setValue() needs QVariant as a second parameter. To pass QList as QVariant, you have to declare it as a Qt meta type. Here's the code snippet that demonstrates how to register a type as meta type:

#include <QCoreApplication>
#include <QDebug>
#include <QMetaType>
#include <QSettings>
#include <QVariant>

Q_DECLARE_METATYPE(QList<int>)

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    qRegisterMetaTypeStreamOperators<QList<int> >("QList<int>");

    QList<int> myList;
    myList.append(1);
    myList.append(2);
    myList.append(3);

    QSettings settings("Moose Soft", "Facturo-Pro");
    settings.setValue("foo", QVariant::fromValue(myList));
    QList<int> myList2 = settings.value("foo").value<QList<int> >();
    qDebug() << myList2;

    return 0;
}

You might have to register QList as a meta-type of its own for it to work. This is a good starting point to read up on meta-types in Qt: http://qt.nokia.com/doc/4.6/qmetatype.html#details .

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!