Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: cbp от Май 18, 2009, 19:11



Название: Преобразование типов
Отправлено: cbp от Май 18, 2009, 19:11
С помощью Qwt надо нарисовать график, отсчёты сигнала qint16 Quadr, Coph; я считываю в потоке из файла, а чтобы их прорисовать использую следующую функцию:

Цитировать
void Plot::showData(double *count, double *amplitudeQ, double *amplitudeC)
{
   crvQuadr->setData(count, amplitudeQ, 65535);
   crvCoph->setData(count, amplitudeC, 65535);
   replot();
}

Соответственно вопрос - как преобразовать qint16 в double * ? Или можно обойтись без преобразования?


Название: Re: Преобразование типов
Отправлено: Alex Custov от Май 18, 2009, 19:56
В setData() передаются массивы точек, которые необходимо отобразить. Ты либо неправильно сформулировал вопрос либо непарвильно используешь curve. Тебе надо сформировать два массива координат точек, по xy осям, и скормить его функции showData().


Название: Re: Преобразование типов
Отправлено: cbp от Май 18, 2009, 20:31
Так массив должен быть типа double! Как его из qint16 сформировать?


Название: Re: Преобразование типов
Отправлено: Alex Custov от Май 18, 2009, 21:39
Так массив должен быть типа double! Как его из qint16 сформировать?

хранить в атрибутах класса массив double чисел, засовывать туда новые данные по мере их прихода, и передавать его функции showData()? В Qwt есть ещё метод setData с параметрами QwtArray, этот тип наверно должен облегчить хранение массива. Типа

Код
C++ (Qt)
void Class::newData(qint16 i)
{
   arrayX.append(++xPoint);
   arrayY.append((double)i);
 
   // метод принимающий QwtArray
   showData(arrayX, arrayY);
}
 

Ну и следить за размером массива, чтобы он не потолстел излишне...


Название: Re: Преобразование типов
Отправлено: cbp от Май 18, 2009, 22:21
Ok Спасибо!