Как я преобразовываю QMap <QString, QMap <QString, интервал>> к QVariant?

QVariant (необходимый для QSettings класс), поддерживает создание от QMap<QString, QVariant>

Но пытаясь инициализировать что-то вроде этого:

QMap<QString, QVariant(QMap<QString, QVariant>)> i;

Дает ошибку:

функция возвращая функцию.

Таким образом я попробовал QMap<QString, QVariant> перегрузка для QVariant() и добрался

ошибка: никакая функция соответствия для вызова к QVariant::QVariant(QMap<QString, QMap<QString, int> >&)

Теперь я попробовал преобразование типа:

QMap<QString, (QVariant)QMap<QString, QVariant> > i;

и добрался

аргумент шаблона 2 недопустим
недопустимый тип в объявлении прежде';'маркер

Таким образом, что необходимый вуду должен преобразовать вложенный QMap к a QVariant объект?

5
задан Toby Speight 25 November 2016 в 11:09
поделиться

2 ответа

Ошибка заключается в том, что QVariant(...) - это не тип, а функция (c-tor).

Вам следовало бы просто использовать: Map i; и использовать QVariant(QMap) только при присвоении значений карте. Дело в том, что QVariant - это что угодно на самом деле. Поэтому карта из QVariants может иметь int в одной позиции (содержащейся в QVariant) и QDate в другой. Поэтому при объявлении типа вы не можете указать, какие типы вы хотите, чтобы содержал QVariant.

4
ответ дан 13 December 2019 в 22:00
поделиться
  1. В QMap )> вы определили отображение строки в тип функции. Что вам действительно нужно, так это QMap .

  2. Вы не хотите QMap > , потому что это просто синтаксически неверно. Оба параметра шаблона должны быть именами типов, а приведение типов не может быть частью имени типа.

  3. Помещение QMap (или почти любого другого типа QMap ) в QVariant не сработает. Единственный тип QMap , который можно преобразовать в QVariant , - это QMap .

    Для этого типа может быть полезно определение типа: QVariantMap . Если в этой ситуации вы будете использовать QVariantMap , то у вас все будет работать правильно.

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

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