Blame view

app/gui/oven_control/circulargauge.cpp 1.92 KB
99b8066f4   김태훈   V0.1.1
1
2
3
4
5
6
7
8
  #include "circulargauge.h"
  
  #include <QPainter>
  #include <QtDebug>
  
  CircularGauge::CircularGauge(QWidget *parent) : QWidget(parent),
      value(30), maximum(40), minimum(0)
  {
05f2a7552   김태훈   image 관리 구조 변경
9
      background.load(":/images/gauge/circle_background.png");
99b8066f4   김태훈   V0.1.1
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  }
  
  void CircularGauge::setValue(int value)
  {
      value = qBound(minimum, value, maximum);
      if (this->value != value)
      {
          this->value = value;
          update();
      }
  }
  
  void CircularGauge::setMaximum(int maximum)
  {
      maximum = qMax(minimum, maximum);
      if (this->maximum != maximum)
      {
          this->maximum = maximum;
          update();
      }
  }
  
  void CircularGauge::setMinimum(int minimum)
  {
      minimum = qMin(minimum, maximum);
      if (this->minimum != minimum)
      {
          this->minimum = minimum;
          update();
      }
  }
  
  void CircularGauge::paintEvent(QPaintEvent */*event*/)
  {
      QPainter painter(this);
      painter.setRenderHint(QPainter::Antialiasing);
      painter.drawImage(0, 0, background);
  
      painter.save();
b3e47756e   김태훈   소스 파일 일괄 변경
49
      QRect rect((349-339)/2, (348-338)/2, 339, 338);
99b8066f4   김태훈   V0.1.1
50
51
52
53
  
      qreal degree = (qreal) qMax(value - minimum, 0) / qMax(maximum - minimum, 1) * 345;
  
      QBrush barBrush(bar);
b3e47756e   김태훈   소스 파일 일괄 변경
54
      barBrush.setTransform(QTransform().translate(5, 5));
99b8066f4   김태훈   V0.1.1
55
56
57
58
59
60
61
  
      painter.setPen(Qt::NoPen);
      painter.setBrush(barBrush);
      painter.drawPie(rect, 5760 / 4 - 10 * 16, (int) (degree * 16) + 10 * 16 );
  
      painter.restore();
      painter.save();
b3e47756e   김태훈   소스 파일 일괄 변경
62
      rect = QRect((349-30)/2 + 2, 2, indicator.size().width() - 2, indicator.size().height() - 2);
99b8066f4   김태훈   V0.1.1
63
64
65
66
67
68
69
70
71
72
73
74
75
      rect.translate(-size().width() / 2, -size().height() / 2);
  
      painter.translate(size().width() / 2, size().height() / 2);
      painter.rotate(-degree);
  
      painter.drawImage(rect, indicator);
  
      painter.restore();
  
      QPen white(Qt::white);
      white.setWidth(3);
  
      painter.setPen(white);
b3e47756e   김태훈   소스 파일 일괄 변경
76
      painter.drawLine(64.8, 200.4, 285.6, 200.4);
99b8066f4   김태훈   V0.1.1
77
78
  
      rect.setSize(icon.size());
b3e47756e   김태훈   소스 파일 일괄 변경
79
      rect.moveCenter(QPoint(349.2/2, 348/3 + 18));
99b8066f4   김태훈   V0.1.1
80
81
82
  
      painter.drawImage(rect, icon);
  }