Название: Водопадный спектр в Qwt - C++ Qt Отправлено: dimbor от Июнь 06, 2017, 09:27 Доброго времени суток!
Возникла потребность создать водопадный график средствами Qwt, который бы выводил значения спектра в соотвествии ColorMap'у (как в SdrSharp к примеру). Я предположил, что для этого нужно завести массив переменных QwtPlotSpectrogram, и управлять ими соответственно. Однако я столкнулся с непонятками при работе с этим типом, в частности я не понимаю, как ему нужно подать данные для распределения в соответствии с ColorMap. У меня снаружи есть массив, в котором содержаться значения спектра, а в RasterData принимаются параметры x и y, которые, как я понял - координаты пикселей в виджете. Соответственно, если я буду посылать ему просто значения спектра, то он мне их не выведет, или выведет неправильно. Вопрос - каким образом "скормить" RasterData->value(x,y) массив значений спектра? Заранее спасибо. Вот как я пытаюсь это сделать: Код: class RasterData: public QwtRasterData Название: Re: Водопадный спектр в Qwt - C++ Qt Отправлено: dimbor от Июнь 06, 2017, 15:23 Данные удалось передать при помощи вот этого кода, переделав весь класс:
Код: class RasterData: public QwtRasterData Название: Re: Водопадный спектр в Qwt - C++ Qt Отправлено: __Heaven__ от Июнь 06, 2017, 15:32 Посмотрите в примерах как там используется RasterData. Как пример называется не помню - помню был там комбо с параметрами вывода по ближайшему соседу и билинейной интерполяции. Возможно, поможет.
Название: Re: Водопадный спектр в Qwt - C++ Qt Отправлено: dimbor от Июнь 06, 2017, 17:54 Да, при помощи примера исправил код, теперь работает хотя бы наполовину как надо:
Код: virtual double value( double x, double y) const Однако вторая часть проблемы все ещё присутствует. Поскольку спектрограмма должна быть водопадной, то выводится она должна соответственно с 100 по 0 элемент y, смещая вниз каждую строку спектрограммы. При попытке опустить интервал вывода он заполняет весь график и потом просто перекрашивает его. Что нужно делать в таком случае? Заводить массив этих растердат? Более того, я не могу вывести строку на 100м элементе y, тоесть установка интервала даже в виде setInterval( Qt::YAxis, QwtInterval( 100.0, 99.0 ) ) не дает эффекта. Как поступать в таком случае? |