crossplatform.ru

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

> Массивы в сигналах/слотах
urandom
  опции профиля:
сообщение 13.12.2011, 21:46
Сообщение #1


Студент
*

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

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




Репутация:   0  


Приветствую

Такой вот вопросик. Как можно через сигналы/слоты передать массив элементов с плавающей точкой (float)?
Советовали использовать QVector, но функция, которая отдает мне массив с QVector работать не может. А перекидывать все это из массива в QVector циклами как-то стремно (может есть другой вариант?). Да и медленно. Может объявить структуру с этим массивом и уже работать с ней? Будет ли это адекватным решением?
В общем нужно оптимальное и быстрое решение..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ssoft
  опции профиля:
сообщение 20.12.2011, 13:20
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 17.2.2010
Из: Москва
Пользователь №: 1470

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




Репутация:   3  


Цитата(urandom @ 13.12.2011, 22:46) *
Приветствую

Такой вот вопросик. Как можно через сигналы/слоты передать массив элементов с плавающей точкой (float)?
Советовали использовать QVector, но функция, которая отдает мне массив с QVector работать не может. А перекидывать все это из массива в QVector циклами как-то стремно (может есть другой вариант?). Да и медленно. Может объявить структуру с этим массивом и уже работать с ней? Будет ли это адекватным решением?
В общем нужно оптимальное и быстрое решение..


Я бы не стал использовать "голый" указатель, т.к. это чревато серьезными последствиями, если будет передача данных через очередь.
Использовал бы все-таки QVector или QByteArray.
Перевод массивов простых типов циклами - это, конечно, стрёмно, можно использовать memcpy();

float data[1024];
QVector< float > vec_data( sizeof( data ) / sizeof( float ) );
memcpy( vec_data.data(), data, sizeof( data ) );


float data[1024];
QByteArray vec_data( reinterpret_cast< char * >( data ), sizeof( data ) );


Если сигнал слот взаимодействие гарантировано только Qt::DirectConnection, то можно и указателем.

Сообщение отредактировал ssoft - 20.12.2011, 13:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 22.11.2024, 13:46