首次提交

This commit is contained in:
2026-06-16 13:38:08 +08:00
commit ec32ae543d
192 changed files with 13162 additions and 0 deletions
+103
View File
@@ -0,0 +1,103 @@
#include "FrequentShower.h"
#include <QPainter>
#include <QDebug>
#include <QKeyEvent>
#include "../Global.h"
FrequentShower::FrequentShower(QWidget *parent) : QWidget(parent) {
setObjectName("设置频率值控件");
setFrequent(BackEnd::instance()->YsGetFreq());
}
void FrequentShower::paintEvent(QPaintEvent *event) {
QPainter painter(this);
QFont font;
font.setPointSize(calculateOptimalFontSize(mFrequent, {(int)((double)width() * 0.9), height()}, font));
painter.setFont(font);
painter.setPen(Qt::black);
painter.drawText(rect(), Qt::AlignCenter, mFrequent);
QFontMetrics fontMetrics(font);
if (selectIndex >= 0 && selectIndex < mFrequent.length()) {
int a = (QWidget::width() - fontMetrics.horizontalAdvance(mFrequent)) / 2;
int startX = a + fontMetrics.horizontalAdvance(mFrequent.mid(0, selectIndex));
int w = fontMetrics.horizontalAdvance(mFrequent[selectIndex]);
painter.fillRect(startX, 0, w, QWidget::height(), Qt::black);
painter.setPen(Qt::white);
painter.drawText(QRect(startX, 0, w, QWidget::height()), Qt::AlignCenter, QString(mFrequent[selectIndex]));
}
}
void FrequentShower::keyPressEvent(QKeyEvent *event) {
BackEnd* g = BackEnd::instance();
QString keyText = event->text();
if (keyText >= "0" && keyText <= "9") {
mFrequent[selectIndex] = keyText.at(0).toLatin1();
update();
return;
}
if (g->match(event, "左移")) {
move(-1);
} else if (g->match(event, "右移")) {
move(1);
} else if (g->match(event, "增加")) {
change(1);
} else if (g->match(event, "减小")) {
change(-1);
}
event->ignore();
}
void FrequentShower::move(int num) {
selectIndex += num;
if(selectIndex < 0) {
selectIndex = 0;
} else if(selectIndex >= mFrequent.length()) {
selectIndex = mFrequent.length() - 1;
}
if(mFrequent[selectIndex] == '.') {
if(num > 0) {
selectIndex++;
} else {
selectIndex--;
}
}
update();
}
void FrequentShower::change(int num) {
if (selectIndex >= 0 && selectIndex < mFrequent.length()) {
int n = mFrequent[selectIndex].digitValue();
n += num;
if (n < 0) {
n = 9;
} else if (n > 9) {
n = 0;
}
mFrequent[selectIndex] = QString::number(n)[0];
update();
BackEnd::instance()->YsSetFreq(QString(mFrequent).replace('.', "").toULongLong());
}
}
void FrequentShower::setFrequent(quint64 frequent) {
QString strNumber = QString::number(frequent, 10);
int padding = 11 - strNumber.length();
if (padding > 0) {
strNumber = QString(padding, '0') + strNumber;
}
mFrequent = QString("%1.%2.%3.%4").arg(
strNumber.mid(0, 2),
strNumber.mid(2, 3),
strNumber.mid(5, 3),
strNumber.mid(8, 3)
);
// qDebug() << strNumber << " " << mFrequent;
update();
}