소스 검색

finished all

runningwater 2 년 전
부모
커밋
fee65a1549
6개의 변경된 파일92개의 추가작업 그리고 4개의 파일을 삭제
  1. 44 0
      MemoryWidget.cpp
  2. 23 0
      MemoryWidget.h
  3. 7 0
      ch02-sysinfo.pro
  4. 9 1
      cpuwidget.cpp
  5. 7 3
      mainwindow.cpp
  6. 2 0
      mainwindow.h

+ 44 - 0
MemoryWidget.cpp

@@ -0,0 +1,44 @@
+#include "MemoryWidget.h"
+
+#include "sysinfo.h"
+
+const int CHART_X_RANGE_COUNT = 50;
+const int CHART_X_RANGE_MAX = CHART_X_RANGE_COUNT - 1;
+const int COLOR_DARK_BLUE = 0X209fdf;
+const int COLOR_LIGHT_BLUE = 0Xbfdfef;
+const int PEN_WIDTH = 3;
+
+MemoryWidget::MemoryWidget(QWidget* parent)
+    : SysInfoWidget(parent),
+      mSeries(new QLineSeries(this)),
+      mPointPositionX(0) {
+  QPen pen(COLOR_DARK_BLUE);
+  pen.setWidth(PEN_WIDTH);
+
+  QLinearGradient gradient(QPointF(0, 0), QPointF(0, 1));
+  gradient.setColorAt(1.0, COLOR_DARK_BLUE);
+  gradient.setColorAt(0.0, COLOR_LIGHT_BLUE);
+  gradient.setCoordinateMode(QGradient::ObjectBoundingMode);
+
+  QAreaSeries* areaSeries = new QAreaSeries(mSeries);
+  areaSeries->setPen(pen);
+  areaSeries->setBrush(gradient);
+
+  QChart* chart = chartView().chart();
+  chart->addSeries(areaSeries);
+  chart->setTitle("Memory used");
+  chart->createDefaultAxes();
+  chart->axisX()->setVisible(false);
+  chart->axisX()->setRange(0, CHART_X_RANGE_MAX);
+  chart->axisY()->setRange(0, 100);
+}
+
+void MemoryWidget::updateSeries() {
+  double memoryUsed = SysInfo::instance().memoryUsed();
+  mSeries->append(mPointPositionX++, memoryUsed);
+  if (mSeries->count() > CHART_X_RANGE_COUNT) {
+    QChart* chart = chartView().chart();
+    chart->scroll(chart->plotArea().width() / CHART_X_RANGE_MAX, 0);
+    mSeries->remove(0);
+  }
+}

+ 23 - 0
MemoryWidget.h

@@ -0,0 +1,23 @@
+#ifndef MEMORYWIDGET_H
+#define MEMORYWIDGET_H
+
+#include <QtCharts/QAreaSeries>
+#include <QtCharts/QLineSeries>
+
+#include "sysinfowidget.h"
+
+class MemoryWidget : public SysInfoWidget {
+  Q_OBJECT
+ public:
+  MemoryWidget(QWidget* parent = 0);
+
+  // SysInfoWidget interface
+ protected slots:
+  void updateSeries() override;
+
+ private:
+  QLineSeries* mSeries;
+  qint64 mPointPositionX;
+};
+
+#endif  // MEMORYWIDGET_H

+ 7 - 0
ch02-sysinfo.pro

@@ -8,7 +8,10 @@ CONFIG += c++17
 # In order to do so, uncomment the following line.
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
+COMPILE_MSG = "Compilling on"
+
 SOURCES += \
+    MemoryWidget.cpp \
     cpuwidget.cpp \
     main.cpp \
     mainwindow.cpp \
@@ -16,6 +19,7 @@ SOURCES += \
     sysinfowidget.cpp
 
 HEADERS += \
+    MemoryWidget.h \
     cpuwidget.h \
     mainwindow.h \
     sysinfo.h \
@@ -24,16 +28,19 @@ HEADERS += \
 windows {
     SOURCES += sysinfowindowsimpl.cpp
     HEADERS += sysinfowindowsimpl.h
+    message($$COMPILE_MSG window)
 }
 
 linux {
     SOURCES += sysinfolinuximpl.cpp
     HEADERS += sysinfolinuximpl.h
+    message($$COMPILE_MSG linux)
 }
 
 macx {
     SOURCES += sysinfomacimpl.cpp
     HEADERS += sysinfomacimpl.h
+    message($$COMPILE_MSG mac)
 }
 
 FORMS += \

+ 9 - 1
cpuwidget.cpp

@@ -1,5 +1,7 @@
 #include "cpuwidget.h"
 
+#include "sysinfo.h"
+
 CpuWidget::CpuWidget(QWidget* parent)
     : SysInfoWidget(parent), mSeries(new QPieSeries(this)) {
   mSeries->setHoleSize(0.35);
@@ -11,4 +13,10 @@ CpuWidget::CpuWidget(QWidget* parent)
   chart->setTitle("CPU average load");
 }
 
-void CpuWidget::updateSeries() { qDebug() << "updateSeries"; }
+void CpuWidget::updateSeries() {
+  double cpuLoadAverage = SysInfo::instance().cpuLoadAverage();
+  //  qDebug() << "cpuLoadAverage:" << cpuLoadAverage;
+  mSeries->clear();
+  mSeries->append("Load", cpuLoadAverage);
+  mSeries->append("Free", 100.0 - cpuLoadAverage);
+}

+ 7 - 3
mainwindow.cpp

@@ -1,17 +1,21 @@
 #include "mainwindow.h"
 
-#include <QVBoxLayout>
+#include <QHBoxLayout>
 
 #include "sysinfo.h"
 #include "ui_mainwindow.h"
 
 MainWindow::MainWindow(QWidget* parent)
-    : QMainWindow(parent), ui(new Ui::MainWindow), mCpuWidget(this) {
+    : QMainWindow(parent),
+      ui(new Ui::MainWindow),
+      mCpuWidget(this),
+      mMemoryWidget(this) {
   ui->setupUi(this);
   SysInfo::instance().init();
   qDebug() << SysInfo::instance().memoryUsed();
-  QVBoxLayout* layout = new QVBoxLayout();
+  QHBoxLayout* layout = new QHBoxLayout();
   layout->addWidget(&mCpuWidget);
+  layout->addWidget(&mMemoryWidget);
   ui->centralwidget->setLayout(layout);
 }
 

+ 2 - 0
mainwindow.h

@@ -3,6 +3,7 @@
 
 #include <QMainWindow>
 
+#include "MemoryWidget.h"
 #include "cpuwidget.h"
 
 QT_BEGIN_NAMESPACE
@@ -21,5 +22,6 @@ class MainWindow : public QMainWindow {
  private:
   Ui::MainWindow *ui;
   CpuWidget mCpuWidget;
+  MemoryWidget mMemoryWidget;
 };
 #endif  // MAINWINDOW_H