6f96c947a
김태훈
GUI 0.1.4
|
1
2
3
4
5
6
7
|
#include "preheattempgauge.h"
#include <QPainter>
#include <QtDebug>
PreheatTempGauge::PreheatTempGauge(QWidget *parent) : QWidget(parent)
{
|
05f2a7552
김태훈
image 관리 구조 변경
|
8
9
10
|
border.load(":/images/gauge/bar_short_frame.png");
indicator.load(":/images/gauge/bar_indicator.png");
body.load(":/images/gauge/bar_short_red.png");
|
6f96c947a
김태훈
GUI 0.1.4
|
11
|
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
12
|
val = 0;
|
6f96c947a
김태훈
GUI 0.1.4
|
13
14
15
16
17
18
|
min = 0;
max = 1;
}
void PreheatTempGauge::setValue(int value)
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
19
20
21
22
|
if (value == val)
return;
val = qBound(min, value, max);
|
6f96c947a
김태훈
GUI 0.1.4
|
23
24
25
26
27
28
|
update();
}
void PreheatTempGauge::setMinimum(int minimum)
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
29
30
|
if (minimum == min)
return;
|
6f96c947a
김태훈
GUI 0.1.4
|
31
32
|
min = minimum;
max = qMax(min, max);
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
33
|
val = qBound(min, val, max);
|
6f96c947a
김태훈
GUI 0.1.4
|
34
35
36
37
38
39
|
update();
}
void PreheatTempGauge::setMaximum(int maximum)
{
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
40
41
|
if (maximum == max)
return;
|
6f96c947a
김태훈
GUI 0.1.4
|
42
43
|
max = maximum;
min = qMin(min, max);
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
44
|
val = qBound(min, val, max);
|
6f96c947a
김태훈
GUI 0.1.4
|
45
46
47
48
49
50
51
52
53
|
update();
}
void PreheatTempGauge::paintEvent(QPaintEvent */*event*/)
{
QPainter painter(this);
painter.setBrush(Qt::NoBrush);
painter.setPen(Qt::NoPen);
|
6a81d38e4
김태훈
자동 요리 관련 로직 전면 재작성
|
54
|
qreal percentage = (qreal) (val - min) / qMax(max - min, 1);
|
6f96c947a
김태훈
GUI 0.1.4
|
55
56
57
58
59
60
61
62
63
64
65
66
67
|
percentage = qBound((qreal) 0.0, percentage, (qreal) 1.0);
QRect targetRect(
(border.size().width() - body.size().width()) / 2 + indicator.size().width() / 2,
(border.size().height() - body.size().height()) / 2 + indicator.size().height(),
body.size().width() * percentage, body.height());
QRect sourceRect(0, 0, body.size().width() * percentage, body.height());
painter.drawPixmap(targetRect, body, sourceRect);
painter.drawPixmap(indicator.size().width() / 2, indicator.size().height(), border);
painter.drawPixmap(targetRect.right() - indicator.size().width() / 2, 0, indicator);
}
|