Russian Qt Forum
Ноябрь 01, 2024, 06:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как из qml передать массив в c++ ?  (Прочитано 8242 раз)
virtual_root
Гость
« : Ноябрь 01, 2012, 12:18 »

Добрый день ребята. Подскажите пожалуйста, как можно из функции javascript, которая описана в файле qml передать двумерный массив в функцию c++ ?
Приведу свой код:
код из файла qml
Код
Javascript
           function get(){
               var groups = new Array();
               for (var i = 0; i<areaGroup.children.length; i++){
                   if (children[i].get())
                       groups[i] = children[i].get();
 
               }
               window.Get(groups);
           }
 
код из файла c++
Код
C++ (Qt)
void SettingsNotification::Get(QVariant map)
{
   qDebug()<<map<<"!";
}
 
мне приходит пустой map...
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Ноябрь 01, 2012, 12:58 »

Не уверен что groups двумерный Улыбающийся вот простейший пример и он работает хорошо

qml
Код:
var groups = new Array();
for (var i = 0; i < 10; ++i) {
  groups[i] = i;
}
window.setArr(groups);

cpp
Код:
void Window::setArr(QVariant var)
{
    qDebug() << Q_FUNC_INFO << var;
}

Есть подозрение что у вас groups действительно пустой, перед передачей в get попробуйте вывести содержимое этого контейнера

console.debug(groups)
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #2 : Ноябрь 01, 2012, 13:03 »

Такой код

Код:
var child = new Array();
var groups = new Array();

for (var i = 0; i < 10; ++i) {
  child[i] = i;
}

for (var i = 0; i<child.length; i++){
  groups[i] = child;
}

window.setArr(groups);

тоже передается хорошо, так что скорее всего массив и в правду пустой
Записан
virtual_root
Гость
« Ответ #3 : Ноябрь 01, 2012, 15:34 »

он у меня точно не пустой. Но массив ассоциативный. Просто через console.log() он не выводится, но когда я вывожу например так
Код:
groups[i]["id"]
то получаю нужные данные. А вот в функцию. он правда приходит как пустой...
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #4 : Ноябрь 01, 2012, 16:13 »

конечно не уверен, но может тогда попробовать в C++ части использовать QVariantMap
Записан
virtual_root
Гость
« Ответ #5 : Ноябрь 01, 2012, 16:52 »

уже пробовала) но не помогло... Может есть ещё идеи?)
Записан
twp
Гость
« Ответ #6 : Ноябрь 01, 2012, 18:07 »

Array конвертится в QVariantList http://doc.qt.digia.com/4.8-snapshot/qtbinding.html#javascript-arrays-and-objects
Записан
virtual_root
Гость
« Ответ #7 : Ноябрь 06, 2012, 12:55 »

спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.074 секунд. Запросов: 23.