-
Notifications
You must be signed in to change notification settings - Fork 19
/
LCDNumber2.h
64 lines (57 loc) · 1.72 KB
/
LCDNumber2.h
1
2
3
4
5
6
7
8
9
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#pragma once
#include <QFont>
#include <QFrame>
#include <QLCDNumber>
#include <QMainWindow>
#include <QMouseEvent>
#include <QTimer>
class LCDNumber : public QLCDNumber {
Q_OBJECT
public:
explicit LCDNumber(QWidget* parent = nullptr) : QLCDNumber(parent) {}
signals:
void click(QMouseEvent* event);
protected:
void mousePressEvent(QMouseEvent* event) override {
emit click(event);
}
};
class Window1 : public QMainWindow {
Q_OBJECT
public:
Window1() {
lcdNumber.display(QString::number(static_cast<double>(counter) / 10, 'f', 1));
lcdNumber.move(0, 0);
lcdNumber.resize(1456, 503);
lcdNumber.setSegmentStyle(QLCDNumber::SegmentStyle::Flat);
lcdNumber.setFrameStyle(QFrame::NoFrame);
lcdNumber.setAutoFillBackground(true);
QPalette palette;
palette.setColor(QPalette::Window, QColor::fromRgb(0, 0, 255).darker(1500));
palette.setColor(QPalette::WindowText, QColor::fromRgb(0, 0, 255));
lcdNumber.setPalette(palette);
connect(&lcdNumber, &LCDNumber::click, [&](QMouseEvent* event) {
if (event->button() == Qt::MouseButton::RightButton) {
counter = 0;
lcdNumber.display(QString::number(static_cast<double>(counter) / 10, 'f', 1));
} else if (event->button() == Qt::MouseButton::LeftButton) {
if (timer.isActive())
timer.stop();
else
timer.start();
}
});
timer.setInterval(100);
connect(&timer, &QTimer::timeout, [&] {
lcdNumber.display(QString::number(static_cast<double>(++counter) / 10, 'f', 1));
});
setCentralWidget(&frame);
setWindowTitle("LCD number example 2");
resize(1456, 503);
}
private:
QFrame frame;
LCDNumber lcdNumber {&frame};
QTimer timer {this};
int counter = 0;
};