memorywidget.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "memorywidget.h"
  2. #include <QtCharts/QAreaSeries>
  3. #include <QPen>
  4. #include <QLinearGradient>
  5. #include <QDebug>
  6. #include "sysinfo.h"
  7. using namespace QtCharts;
  8. const int CHART_X_RANGE_COUNT = 50;
  9. const int CHART_X_RANGE_MAX = CHART_X_RANGE_COUNT - 1;
  10. const int COLOR_DARK_BLUE = 0x209fdf;
  11. const int COLOR_LIGHT_BLUE = 0xbfdfef;
  12. const int PEN_WIDTH = 3;
  13. MemoryWidget::MemoryWidget(QWidget *parent) :
  14. #ifdef __arm__
  15. SysInfoWidget(parent, 1200, 3000),
  16. #else
  17. SysInfoWidget(parent, 1200, 1000),
  18. #endif
  19. mSeries(new QLineSeries(this)),
  20. mPointPositionX(0)
  21. {
  22. QPen pen(COLOR_DARK_BLUE);
  23. pen.setWidth(PEN_WIDTH);
  24. QLinearGradient gradient(QPointF(0, 0), QPointF(0, 1));
  25. gradient.setColorAt(1.0, COLOR_DARK_BLUE);
  26. gradient.setColorAt(0.0, COLOR_LIGHT_BLUE);
  27. gradient.setCoordinateMode(QGradient::ObjectBoundingMode);
  28. QAreaSeries* areaSeries = new QAreaSeries(mSeries);
  29. areaSeries->setPen(pen);
  30. areaSeries->setBrush(gradient);
  31. QChart* chart = chartView().chart();
  32. chart->addSeries(areaSeries);
  33. chart->setTitle("Memory used");
  34. chart->createDefaultAxes();
  35. chart->axisX()->setRange(0, CHART_X_RANGE_MAX);
  36. chart->axisX()->setVisible(false);
  37. chart->axisY()->setRange(0, 100);
  38. }
  39. void MemoryWidget::updateSeries()
  40. {
  41. double memoryUsed = SysInfo::instance().memoryUsed();
  42. //qDebug() << memoryUsed << endl;
  43. mSeries->append(mPointPositionX++, memoryUsed);
  44. if (mSeries->count() > CHART_X_RANGE_COUNT) {
  45. QChart* chart = chartView().chart();
  46. chart->scroll(chart->plotArea().width() / CHART_X_RANGE_MAX, 0);
  47. mSeries->remove(0);
  48. }
  49. }