Сохраните QList <интервал> QSettings

Я хочу сохранить a QList<int> моему QSettings без цикличного выполнения через него.
Я знаю, что мог использовать writeArray () и цикл, чтобы сохранить все объекты или записать QList в QByteArray и сохранить это, но затем это не человекочитаемо в моем файле INI..

В настоящее время я использую следующее для преобразования моего QList<int> кому: QList<QVariant>:

QList<QVariant> variantList;
//Temp is the QList<int>
for (int i = 0; i < temp.size(); i++)
  variantList.append(temp.at(i));

И сохранить это QList<Variant> к моим Настройкам я использую следующий код:

QVariant list;
list.setValue(variantList);
//saveSession is my QSettings object
saveSession.setValue("MyList", list);

QList правильно сохраняется в мой файл INI, как я вижу (запятая разделила список моего ints),
Но функция отказывает на выходе.
Я уже попытался использовать указатель на свой объект QSettings вместо этого, но затем он отказывает при удалении указателя..

13
задан Tobias 16 March 2010 в 08:20
поделиться

2 ответа

QSettings :: setValue () требует QVariant в качестве второго параметра. Чтобы передать QList как QVariant, вы должны объявить его как метатип Qt . Вот фрагмент кода, демонстрирующий, как зарегистрировать тип как метатип:

#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;
}
19
ответ дан 1 December 2019 в 22:57
поделиться

Возможно, вам придется зарегистрировать QList как собственный метатип, чтобы он работал. Это хорошая отправная точка для изучения метатипов в Qt: http://qt.nokia.com/doc/4.6/qmetatype.html#details .

1
ответ дан 1 December 2019 в 22:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: