#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QTimer>
#include "QDebug"
int i;
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
m_Image = QImage(200,200,QImage::Format_RGB32);
QColor backColor = qRgb(255,255,0); //画布初始化背景色使用白色
m_Image.fill(backColor);//对画布进行填充
m_Image2.fill(QColor(255,255,255));
time = new QTimer(this);
connect(time,SIGNAL(timeout()),this,SLOT(change()));
for(int i = 0;i<=1301;++i)
{
m_vector.append(i);
}
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
time->start(500);
}
void Widget::change()
{
QRgb value;
value = qRgb(255,0,0);
for(int j =0;j<200;++j)
{
m_Image.setPixel(j,i,value);
this->update();
}
++i;
}
//传入采样集合 acc 为取样精度
template <typename T>
QVector<T> Widget::transf(QVector<T> &vector,const int acc)
{
QVector<T> newVec;
newVec.reserve(vector.length()/acc);
auto it = vector.begin();
for (it ; vector.end()-it >acc; it+=acc)
{
auto max = std::max_element(it, it+acc);
newVec.push_back(*max);
}
return newVec;
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawImage(0,0,m_Image);
painter.drawImage(250,0,m_Image2);
}
void Widget::on_pushButton_2_clicked()
{
time->stop();
qDebug()<<transf(m_vector,4);
}
void Widget::on_pushButton_3_clicked()
{
m_Image2 = m_Image;
update();
for(int i =0;i<200;++i)
{
arr[i] = 0.523*i;
qDebug()<<arr[i];
}
qDebug()<<"转换了";
QVector<float> vec= charToVect(arr);
qDebug()<<vec;
}
template <typename T>
QVector<T> Widget::charToVect(T* arr)
{
for(int i; i<200; ++i)
{
m_vectorf.append(arr[i]);
}
qDebug()<<m_vectorf.length();
return m_vectorf;
}