2010-11-12 2 views
0

Я изучаю QtScript и написал несколько тривиальных примеров. Отображение является простым, если я ограничиваю аргументы простыми типами.Дизайн C++ метод, который принимает аргументы с переменными номерами, переданные из QtScript

теперь я хочу, чтобы иметь возможность передать переменное количество аргументов от QtScript к классу C++, такие как

Myobject.add(1, 2, 3, "4444"); 
Myobject.add({first:1, second:2, third:333}); 

Как объявить метод в C++ реализовать?

ответ

1

Быстрый поиск предлагает использовать QVariantList:

void Myobject::add(QVariantList& l) 
{ 
    for(QVariantList::const_iterator i(l.begin()); i != l.end(); ++i) { 
     QVariant elem(*i); 
     if(elem.canConvert<QVariantMap>()) { 
      // ... 
     } 
    } 
} 

У меня нет инструментов, чтобы проверить это прямо сейчас, хотя.

+0

Это добавило бы перегрузку для вызовов с одним аргументом массива, в то время как OP, похоже, искал способ передать переменное количество аргументов одной функции (для которой похоже, что нет поддержки удобства?). –