首次提交

This commit is contained in:
2026-06-16 13:38:08 +08:00
commit ec32ae543d
192 changed files with 13162 additions and 0 deletions
@@ -0,0 +1,17 @@
#include <utility>
#include "AbstractTextButton.h"
#include <QPainter>
AbstractTextButton::AbstractTextButton(QWidget *parent) : QWidget(parent) {
}
void AbstractTextButton::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.fillRect(rect(), Qt::red);
painter.end();
}
void AbstractTextButton::mousePressEvent(QMouseEvent *event) {
if(mClick) mClick();
event->accept();
}
@@ -0,0 +1,20 @@
#ifndef AbstractTextButton_H
#define AbstractTextButton_H
#include "../Global.h"
class AbstractTextButton : public QWidget {
public:
explicit AbstractTextButton(QWidget *parent = nullptr);
QFont mFont;
QColor mBackgroundColor;
QColor mEnterColor;
QPen mPen;
bool mEnter = false;
std::function<void(void)> mClick = nullptr;
protected:
void paintEvent(QPaintEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
};
#endif
+2
View File
@@ -0,0 +1,2 @@
#include "ConsoleWidget.h"
+11
View File
@@ -0,0 +1,11 @@
#ifndef ConsoleWidget_H
#define ConsoleWidget_H
#include "../Global.h"
#include <QTextEdit>
class ConsoleWidget : public QTextEdit {
public:
};
#endif
+11
View File
@@ -0,0 +1,11 @@
#include "Electricity.h"
#include <QPainter>
Electricity::Electricity(QWidget *parent) : QWidget(parent) {
}
void Electricity::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.fillRect(rect(), Qt::red);
painter.end();
}
+13
View File
@@ -0,0 +1,13 @@
#ifndef Electricity_H
#define Electricity_H
#include "../Global.h"
class Electricity : public QWidget {
public:
explicit Electricity(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event) override;
};
#endif
+44
View File
@@ -0,0 +1,44 @@
#include "ExpandInput.h"
#include "../BackEnd/MainWidget.h"
#include "YSGraphic_Core/base/export.h"
#include <QAction>
#include <QPainter>
ExpandInput::ExpandInput(QWidget *parent) : QLineEdit(parent) {
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
setMinimumSize(0, 0);
setFrame(false);
mFont.setBold(true);
YSG::VirtualKeyBoard::instance()->setEdit(this);
}
void ExpandInput::paintEvent(QPaintEvent *event) {
// QPainter painter(this);
// painter.fillRect(rect(), Qt::red);
// painter.end();
QLineEdit::paintEvent(event);
}
void ExpandInput::resizeEvent(QResizeEvent *event) {
int pixelSize = Global::instance()->adaptHeight(60);
QFont font = mFont;
font.setPixelSize(pixelSize);
setFont(font);
QWidget::resizeEvent(event);
}
void ExpandInput::focusInEvent(QFocusEvent *event) {
setStyleSheet("QLineEdit { border: 4px dashed gray; }");
update();
event->accept();
}
void ExpandInput::focusOutEvent(QFocusEvent *event) {
setStyleSheet("QLineEdit { border: 0px dashed gray; }");
QLineEdit::focusOutEvent(event);
}
void ExpandInput::keyPressEvent(QKeyEvent *event) {
QLineEdit::keyPressEvent(event);
event->ignore();
}
+20
View File
@@ -0,0 +1,20 @@
#ifndef ExpandInput_H
#define ExpandInput_H
#include "../Global.h"
#include <QLineEdit>
class ExpandInput : public QLineEdit {
public:
explicit ExpandInput(QWidget *parent = nullptr);
QFont mFont;
protected:
void paintEvent(QPaintEvent *event) override;
void resizeEvent(QResizeEvent *event) override;
void focusInEvent(QFocusEvent *event) override;
void focusOutEvent(QFocusEvent *event) override;
void keyPressEvent(QKeyEvent *event) override;
};
#endif
+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();
}
+21
View File
@@ -0,0 +1,21 @@
#ifndef FrequentShower_H
#define FrequentShower_H
#include "../Global.h"
class FrequentShower : public QWidget {
public:
explicit FrequentShower(QWidget *parent = nullptr);
void setFrequent(quint64 frequent);
int selectIndex = 0;
QString mFrequent = "00.000.000.000";
protected:
void paintEvent(QPaintEvent *event) override;
void keyPressEvent(QKeyEvent *event) override;
void move(int num);
void change(int num);
};
#endif
+88
View File
@@ -0,0 +1,88 @@
#include "ProgressBar.h"
#include <QPainter>
ProgressBar::ProgressBar(const QVector<Tick>& tickList, QWidget *parent) : QWidget(parent), mTickList(tickList) {
setAttribute(Qt::WA_OpaquePaintEvent, true);
mTimer = startTimer(30);
}
double ProgressBar::getDrawWidth(double value) {
int n = mTickList.size();
int i = 1;
for(; i < n - 1; ++i) {
double cur = mTickList[i].mValue;
if(mValue < cur || qFuzzyCompare(mValue, cur)) {
break;
}
}
int lowerOffset = i - 1;
int upperOffset = i;
double lower = mTickList[lowerOffset].mValue;
double upper = mTickList[upperOffset].mValue;
double w_step = (double)QWidget::width()/(double)(n-1);
double lastRate = qMax(0.0, (mValue - lower)/(upper - lower));
double drawWidth = w_step * (lastRate + lowerOffset);
QString ticks;
for(Tick& tick : mTickList) {
ticks.append(" " + QString::number(tick.mValue));
}
// qDebug() << QString("%1->[%2,%3] i=%4 n=%5 drawWidth:%6 width:%7 ticks:%8 w_step:%9 lastRate:%10")
// .arg(mValue).arg(lower).arg(upper).arg(i).arg(n).arg(drawWidth).arg(width()).arg(ticks)
// .arg(w_step).arg(lastRate);
return drawWidth;
}
void ProgressBar::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.fillRect(rect(), QApplication::style()->standardPalette().brush(QPalette::Window));
painter.setPen(QPen(Qt::black));
auto w = (double)QWidget::width();
auto hh = (double)height()/2;
int n = mTickList.size();
int tickW = 1;
double drawWidth = getDrawWidth(mValue);
// 背景
painter.fillRect(0, 0, drawWidth - tickW - 4, height()/2, Qt::black);
int curX = 0;
// 进度条
while(curX + tickW + 4 < drawWidth){
painter.fillRect(curX, 0, tickW, height()/2, Qt::gray);
curX += tickW + (int)mTickSpaceW;
}
int lineY = (int)hh + 2;
painter.fillRect(curX -(int)mTickSpaceW , 0, 4, lineY - 0, Qt::yellow);
painter.drawLine(0, lineY , (int)w, lineY);
// 画刻度
QFont font;
font.setBold(true);
QFontMetrics fm(font);
for(int i = 0; i < n; ++i){
int tickX = (int)((double)(QWidget::width() * i)/(double)(n - 1));
int textW = fm.horizontalAdvance( mTickList[i].mText);
int textX;
if(i == n - 1) {
textX = tickX - textW;
tickX -=1;
} else if( i == 0) {
textX = tickX;
} else {
textX = tickX - textW/2;
}
painter.setPen(Qt::black);
painter.drawLine(tickX, lineY, tickX, (lineY + 5));
painter.setPen(mTickList[i].mColor);
painter.setFont(font);
painter.drawText(QRectF(textX, lineY, textW, lineY), Qt::AlignCenter, mTickList[i].mText);
}
}
void ProgressBar::timerEvent(QTimerEvent *event) {
if(event->timerId() == mTimer) {
if(mSetValue) mSetValue();
update();
}
QObject::timerEvent(event);
}
+37
View File
@@ -0,0 +1,37 @@
#ifndef ProgressBar_H
#define ProgressBar_H
#include <utility>
#include "../Global.h"
struct Tick{
QString mText;
QColor mColor;
double mValue = 0;
Tick(QString text, QColor color) : mText(std::move(text)), mColor(std::move(color)){
QString that = (mText[0] == '+' || mText[0] == '-' || mText[0] == '<' || mText[0] == '>') ? mText.mid(1) : mText;
mValue = that.toDouble();
}
Tick(QString text, QColor color, double value) : mText(std::move(text)), mColor(std::move(color)){
mValue = value;
}
};
class ProgressBar : public QWidget {
public:
explicit ProgressBar(const QVector<Tick>& tickList, QWidget *parent = nullptr);
double mTickSpaceW = 1;
double mValue = 0;
int mTimer;
std::function<void(void)> mSetValue = nullptr;
double getDrawWidth(double value);
protected:
void paintEvent(QPaintEvent *event) override;
void timerEvent(QTimerEvent *event) override;
QVector<Tick> mTickList;
};
#endif
+27
View File
@@ -0,0 +1,27 @@
#include "ShowHelpInfo.h"
#include "../Global.h"
#include <QPainter>
#include "../BackEnd/MainWidget.h"
ShowHelpInfo::ShowHelpInfo(QWidget *parent) : QTextEdit(parent) {
setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
setMinimumSize(0, 0);
setFrameStyle(0);
setCursorWidth(0);
setFocusPolicy(Qt::NoFocus);
setReadOnly(true);
setStyleSheet("color: black;");
mFont.setBold(true);
setEnabled(false);
}
//void ShowHelpInfo::paintEvent(QPaintEvent *event) {
// QTextEdit::paintEvent(event);
//}
void ShowHelpInfo::resizeEvent(QResizeEvent *e) {
QFont font = mFont;
font.setPixelSize(Global::instance()->adaptHeight(mFont.pixelSize()));
setFont(font);
QTextEdit::resizeEvent(e);
}
+16
View File
@@ -0,0 +1,16 @@
#ifndef ShowHelpInfo_H
#define ShowHelpInfo_H
#include "../Global.h"
#include <QTextEdit>
class ShowHelpInfo : public QTextEdit {
public:
explicit ShowHelpInfo(QWidget *parent = nullptr);
QFont mFont;
protected:
// void paintEvent(QPaintEvent *event) override;
void resizeEvent(QResizeEvent *e) override;
};
#endif
+23
View File
@@ -0,0 +1,23 @@
#include "ShowTime.h"
#include <QPainter>
#include <QDateTime>
#include <QString>
ShowTime::ShowTime(QWidget *parent) : QWidget(parent) {
setObjectName("ShowTime");
setAttribute(Qt::WA_OpaquePaintEvent);
mTimer.start(1000);
connect(&mTimer, &QTimer::timeout, this, [this](){
update();
});
}
void ShowTime::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.fillRect(rect(), QApplication::style()->standardPalette().brush(QPalette::Window));
painter.setPen(QPen());
QString&& dateTimeString = QDateTime::currentDateTime().toString("HH:mm:ss");
painter.drawText(rect(), Qt::AlignCenter, dateTimeString);
painter.end();
}
+15
View File
@@ -0,0 +1,15 @@
#ifndef ShowTime_H
#define ShowTime_H
#include "../Global.h"
#include <QTimer>
class ShowTime : public QWidget {
public:
explicit ShowTime(QWidget *parent = nullptr);
QTimer mTimer;
protected:
void paintEvent(QPaintEvent *event) override;
};
#endif
+41
View File
@@ -0,0 +1,41 @@
#include "TopMenuBar.h"
#include "../Global.h"
#include "ShowTime.h"
#include "../BackEnd/MainWidget.h"
#include "../BaseWidget.h"
#include "Wifi.h"
TopMenuBar::TopMenuBar(QWidget *parent) : QWidget(parent) {
int fontSize = 20;
mAM = createButton("AM", fontSize);
mATU = createButton("ATU", fontSize);
mVSQL = createButton("VSQL", fontSize);
mNB = createButton("NB", fontSize);
mNR = createButton("NR", fontSize);
mDNF = createButton("DNF", fontSize);
mPRE = createButton("PRE", fontSize);
mATT = createButton("ATT", fontSize);
mSPL = createButton("SPL", fontSize);
mFIL1 = createButton("FIL1", fontSize);
mAGC_A = createButton("AGC_A", fontSize);
mTextButtonList = new YSG::RollObject<QPushButton>({mAM, mATU, mVSQL, mNB, mNR, mDNF, mPRE, mATT, mSPL, mFIL1, mAGC_A}, [](QPushButton* cur){
}, [](QPushButton* btn){
}, this);
mShowTime = new ShowTime;
mWifi = new Wifi;
QHBoxLayout* statusBar = mTextButtonList->hBoxLayout(2);
statusBar->addStretch(3);
statusBar->addWidget(mWifi, 1);
statusBar->addWidget(mShowTime, 1);
setLayout(statusBar);
}
//void TopMenuBar::paintEvent(QPaintEvent *event) {
// QPainter painter(this);
// painter.fillRect(rect(), Qt::red);
// painter.end();
//}
+24
View File
@@ -0,0 +1,24 @@
#ifndef TopMenuBar_H
#define TopMenuBar_H
#include "../Global.h"
#include "YSGraphic_Core/base/export.h"
class TopButton;
class ShowTime;
class Wifi;
class QPushButton;
class TopMenuBar : public QWidget, public YSG::SingletonWidget<TopMenuBar> {
public:
explicit TopMenuBar(QWidget *parent = nullptr);
QPushButton *mAM, *mATU, *mVSQL, *mNB, *mNR, *mDNF, *mPRE, *mATT, *mSPL, *mFIL1, *mAGC_A;
Wifi* mWifi;
YSG::RollObject<QPushButton> *mTextButtonList;
int index = 0;
ShowTime *mShowTime;
protected:
// void paintEvent(QPaintEvent *event) override;
};
#endif
+43
View File
@@ -0,0 +1,43 @@
#include "Wifi.h"
#include "../Global.h"
#include <QPainter>
#include <QDebug>
Wifi::Wifi(QWidget *parent) : QWidget(parent) {
}
void Wifi::paintEvent(QPaintEvent *event) {
QPainter painter(this);
// painter.fillRect(rect(), Qt::red);
QRect window(0, 0, 20, 10);
painter.setWindow(window);
double w = window.width(), h = window.height();
QRect drawRect = getMaxRect(rect(), w / h);
painter.setViewport(drawRect);
double rate = 1.5; // wife宽度 : 间隙宽度
double baseHeightRate = 0.2;
double spaceWidth = w/(1.0 * 4 + rate * 5);
double stripWidth = spaceWidth * rate;
double baseHeight = h * baseHeightRate;
double raiseHeight = h * (1.0 - baseHeightRate)/4.0;
double raiseWidth = spaceWidth + stripWidth;
QRect textRect = QRect(0, 0, (int)(raiseWidth * 2), (int)(baseHeight * 2));
QFont font;
font.setPixelSize(5);
font.setBold(true);
painter.setFont(font);
QPen pen;
pen.setColor(Qt::white);
painter.setPen(pen);
painter.drawText(textRect, Qt::AlignJustify | Qt::AlignVCenter, "4G");
for(int i = 0; i < 5; ++i){
double curHeight = baseHeight + i * raiseHeight;
double curX = 0 + raiseWidth * i;
QColor color = i < value ? Qt::white : QColor(0, 0, 0, 50);
painter.fillRect(QRectF(curX, h - curHeight, stripWidth, curHeight), color);
}
painter.end();
}
+14
View File
@@ -0,0 +1,14 @@
#ifndef Wifi_H
#define Wifi_H
#include "../Global.h"
class Wifi : public QWidget {
public:
explicit Wifi(QWidget *parent = nullptr);
int value = 3;
protected:
void paintEvent(QPaintEvent *event) override;
};
#endif