crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Вопрос по QtScript и массивам ?
AntonTatu
  опции профиля:
сообщение 5.3.2009, 11:15
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет .

Вот небольшой примерчик:
QScriptValue fun = engine.evaluate("function(a,b){return a+b;}"); //вводим функцию непосредственно в коде С++
QScriptValueList args; //список аргументов
args << QScriptValue(&engine, 5) << QScriptValue(&engine, 7);
QScriptValue y = fun.call(QScriptValue(), args); //5+7=12
int result = y.toNumber();


в нем с использованием QtScript в безымянную функцию передается значение переменных a и b, он работает, но....

Вопрос как в такую функцию передать двумерный массив типа Vector
объявляю я его так:
std::vector < std::vector <char> > *MyMassive;
распределяю память так:
MyMassive = new stdvector < std::vector <char> >(i, std::vector<char> j);
заполняю требуемыми значениями так:
(*MyMassive)[i][j] = чему нибудь
передаю и использую в функциях C++ так:

void MyFun(std::vector < std::vector <char> >& MyMassive)
{
//обход массива
for (int i = 0; i<10; i++)
   for (int i = 0; i<10; i++)
      MyMassive[i][j]
}


Спасибо за ответы ! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 5.3.2009, 11:53
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Такое вот нашел в Assistante, может поможет:

Цитата
int qScriptRegisterSequenceMetaType ( QScriptEngine * engine, const QScriptValue & prototype = QScriptValue() )

Registers the sequence type T in the given engine. This function provides conversion functions that convert between T and Qt Script Array objects. T must provide a const_iterator class and begin(), end() and push_back() functions. If prototype is valid, it will be set as the prototype of Array objects due to conversion from T; otherwise, the standard Array prototype will be used.

Returns the internal ID used by QMetaType.

You need to declare the container type first with Q_DECLARE_METATYPE(). If the element type isn't a standard Qt/C++ type, it must be declared using Q_DECLARE_METATYPE() as well. Example:
    Q_DECLARE_METATYPE(QVector<int>)
...
    qScriptRegisterSequenceMetaType<QVector<int> >(engine);
...
    QVector<int> v = qscriptvalue_cast<QVector<int> >(engine->evaluate("[5, 1, 3, 2]"));
    qSort(v.begin(), v.end());
    QScriptValue a = engine->toScriptValue(v);
    qDebug() << a.toString(); // outputs "[1, 2, 3, 5]"

See also qScriptRegisterMetaType().
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.4.2024, 1:04