#include "historydata.h" #include "ui_historydata.h" #include #include historyData::historyData(QWidget *parent) : QWidget(parent), ui(new Ui::historyData) { ui->setupUi(this); //设置窗口标题 this->setWindowTitle("历史数据"); this->setFixedSize(this->width(), this->height()); //实例化 chart = new QChart; chart->setAnimationOptions(QChart::SeriesAnimations); //在缩放窗口大小时可以用动画进行美化 TemSeries = new QLineSeries(); HumSeries = new QLineSeries(); LightSeries = new QLineSeries(); SmokeSeries = new QLineSeries(); paintXY(); //创建套接字,和A9服务器取得连接 historyDataSocket = new QTcpSocket(this); historyDataSocket->connectToHost("192.168.200.105", 7777); connect(historyDataSocket, SIGNAL(readyRead()), this, SLOT(recvA9ServerSlot())); } historyData::~historyData() { delete ui; historyDataSocket->close(); historyDataSocket = NULL; } void historyData::on_historyDataReturnBrn_clicked() { TemSeries->clear(); HumSeries->clear(); LightSeries->clear(); SmokeSeries->clear(); emit historyDataToWidgetSignal(); } void historyData::on_searchHistoryDataBtn_clicked() { QString command = {"searchHistoryData"}; QByteArray arr; arr.clear(); arr.append(command); if(this->historyDataSocket->write(arr) == -1) { int ret = QMessageBox::question(this, "提交命令失败", "你提交的命令并没有上传到服务器!!!", QMessageBox::Yes); } else { int ret = QMessageBox::question(this, "提交成功", "恭喜你成功提交数据到服务器!!!", QMessageBox::Yes); } //清空坐标里的内容 TemSeries->clear(); HumSeries->clear(); LightSeries->clear(); SmokeSeries->clear(); paintTemSeries(); paintHumSeries(); paintLightSeries(); paintSmokeSeries(); } void historyData::recvA9ServerSlot() { QByteArray recvServer = historyDataSocket->readAll(); qDebug() << "history recv " << recvServer; } //画坐标轴 void historyData::paintXY() { axisX = new QValueAxis; //设置坐标轴的格式 axisX->setRange(0,12); //设置范围 axisX->setLabelFormat("%d"); //设置刻度的格式 axisX->setGridLineVisible(true); //网格线可见 axisX->setTickCount(12); //设置多少格 axisX->setMinorTickCount(5); //设置每格小刻度线的数目 chart->addAxis(axisX, Qt::AlignBottom); //为chart设置x轴,并把轴附加到线上 axisY = new QValueAxis; axisY->setRange(0,100); //设置范围 axisY->setLabelFormat("%d"); //设置刻度的格式 axisY->setGridLineVisible(true); //网格线可见 axisY->setTickCount(11); //设置多少格 axisY->setMinorTickCount(5); //设置每格小刻度线的数目 chart->addAxis(axisY, Qt::AlignLeft); //为chart设置y轴,并把轴附加到线上 //用Qchart在QChartView上面 ui->canvas->setChart(chart); ui->canvas->setRenderHint(QPainter::Antialiasing); //抗锯齿 } //画温度的折线统计图 void historyData::paintTemSeries() { //设置一个pen给线 QPen TemPen; TemPen.setWidth(2); TemPen.setColor(Qt::red); //把笔交给线 TemSeries->setPen(TemPen); TemSeries->setName("温度"); *TemSeries << QPointF(0,24) << QPointF(1,23) << QPointF(2,25) << QPointF(3,27) << QPointF(4,29)<< QPointF(5,29) << QPointF(6,30) << QPointF(7,32) << QPointF(8,35)<< QPointF(9,37) << QPointF(10,35) << QPointF(11,33) << QPointF(12,30); chart->addSeries(TemSeries); //把线绑定到坐标轴上 TemSeries->attachAxis(axisX); TemSeries->attachAxis(axisY); } //画湿度的折线统计图 void historyData::paintHumSeries() { //设置一个pen给线 QPen HumPen; HumPen.setWidth(2); HumPen.setColor(Qt::yellow); //把笔交给线 HumSeries->setPen(HumPen); HumSeries->setName("湿度"); *HumSeries << QPointF(0,65) << QPointF(1,67) << QPointF(2,64) << QPointF(3,64) << QPointF(4,62)<< QPointF(5,60) << QPointF(6,58) << QPointF(7,57) << QPointF(8,57)<< QPointF(9,55) << QPointF(10,56) << QPointF(11,58) << QPointF(12,62); chart->addSeries(HumSeries); //把线绑定到坐标轴上 HumSeries->attachAxis(axisX); HumSeries->attachAxis(axisY); } //画光照强度的折线统计图 void historyData::paintLightSeries() { //设置一个pen给线 QPen LightPen; LightPen.setWidth(2); LightPen.setColor(Qt::green); //把笔交给线 LightSeries->setPen(LightPen); LightSeries->setName("光照强度"); *LightSeries << QPointF(0,48) << QPointF(1,53) << QPointF(2,52) << QPointF(3,51) << QPointF(4,53)<< QPointF(5,50) << QPointF(6,55) << QPointF(7,60) << QPointF(8,68)<< QPointF(9,69) << QPointF(10,75) << QPointF(11,62) << QPointF(12,55); chart->addSeries(LightSeries); //把线绑定到坐标轴上 LightSeries->attachAxis(axisX); LightSeries->attachAxis(axisY); } //画烟雾浓度的折线统计图 void historyData::paintSmokeSeries() { //设置一个pen给线 QPen SmokePen; SmokePen.setWidth(2); SmokePen.setColor(Qt::blue); //把笔交给线 SmokeSeries->setPen(SmokePen); SmokeSeries->setName("烟雾浓度"); *SmokeSeries << QPointF(0,10) << QPointF(3,10) << QPointF(7,10) << QPointF(9,10) << QPointF(12,10); chart->addSeries(SmokeSeries); //把线绑定到坐标轴上 SmokeSeries->attachAxis(axisX); SmokeSeries->attachAxis(axisY); }