大重构

This commit is contained in:
2026-07-28 17:55:29 +08:00
parent 317b49403d
commit f5f1bf9cc7
63 changed files with 179 additions and 2000 deletions
@@ -18,30 +18,33 @@ static double max = 160;
QWidget* IntermediateFrequencyWidget::createSpectrogramPowerPlot() {
class SpectrumPlot : public YSG::Plot {
public:
YSG::Frequent_Axis* xAxis{};
YSG::Axis* yAxis{};
YSG::Muti_Select_Rect* msr{};
YSG::Spectrum* sp{};
std::shared_ptr<YSG::Frequent_Axis> xAxis{};
std::shared_ptr<YSG::Axis> yAxis{};
std::shared_ptr<YSG::Muti_Select_Rect> msr{};
std::shared_ptr<YSG::Spectrum> sp{};
QMenu* mMenu{};
void init() override {
Plot::init();
object_name = "SpectrumPlot";
xAxis = YSG::Frequent_Axis::Builder(this, Qt::Horizontal)
auto data = create_renderable_node(root_renderable(), "DataRenderable");
auto axis = create_renderable_node(root_renderable(), "AxisRenderable");
auto overlay = create_renderable_node(root_renderable(), "OverlayRenderable");
xAxis = YSG::Frequent_Axis::Builder(axis, Qt::Horizontal)
.set_tick_length(-10)
.set_coord_range(frequent_range)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.build();
yAxis = YSG::Axis::Builder(this, Qt::Vertical)
yAxis = YSG::Axis::Builder(axis, Qt::Vertical)
.set_coord_range({160, 0})
.set_unit_text("功率")
.build();
sp = YSG::Spectrum::Builder(xAxis, yAxis)
sp = YSG::Spectrum::Builder(data, xAxis, yAxis)
.set_frequent_range(frequent_range)
.set_use_sweep_frequent_rect(true)
.set_frequent_point_size(1024)
.build();
msr = YSG::Muti_Select_Rect::Builder(xAxis, yAxis).build();
msr = YSG::Muti_Select_Rect::Builder(overlay, xAxis, yAxis).build();
}
protected:
void resizeEvent(QResizeEvent* event) override {
@@ -55,10 +58,10 @@ QWidget* IntermediateFrequencyWidget::createSpectrogramPowerPlot() {
void contextMenuEvent(QContextMenuEvent* event) override {
if (!mMenu) {
auto ws =
bw(cw(sp, -1), "频谱图") +
bw(cw(xAxis), "频率x轴") +
bw(cw(yAxis), "功率y轴") +
bw(cw(msr), "多选框");
bw(cw(sp.get(), -1), "频谱图") +
bw(cw(xAxis.get()), "频率x轴") +
bw(cw(yAxis.get()), "功率y轴") +
bw(cw(msr.get()), "多选框");
mMenu = createMenu(this, ws);
}
mMenu->exec(event->globalPos());
@@ -77,30 +80,33 @@ QWidget* IntermediateFrequencyWidget::createSpectrogramPowerPlot() {
QWidget* IntermediateFrequencyWidget::create_Afterglow_Plot() {
class AfterglowPlot : public YSG::Plot {
public:
YSG::Frequent_Axis* xAxis{};
YSG::Axis* yAxis{};
YSG::Afterglow* ag{};
YSG::Muti_Select_Rect* msr{};
std::shared_ptr<YSG::Frequent_Axis> xAxis{};
std::shared_ptr<YSG::Axis> yAxis{};
std::shared_ptr<YSG::Afterglow> ag{};
std::shared_ptr<YSG::Muti_Select_Rect> msr{};
QMenu* mMenu{};
void init() override {
Plot::init();
object_name = "AfterglowPlot";
xAxis = YSG::Frequent_Axis::Builder(this, Qt::Horizontal)
auto data = create_renderable_node(root_renderable(), "DataRenderable");
auto axis = create_renderable_node(root_renderable(), "AxisRenderable");
auto overlay = create_renderable_node(root_renderable(), "OverlayRenderable");
xAxis = YSG::Frequent_Axis::Builder(axis, Qt::Horizontal)
.set_coord_range(frequent_range)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.set_use_drag(true)
.build();
yAxis = YSG::Axis::Builder(this, Qt::Vertical)
yAxis = YSG::Axis::Builder(axis, Qt::Vertical)
.set_coord_range({160, 0})
.set_use_drag(true)
.build();
ag = YSG::Afterglow::Builder(xAxis, yAxis)
ag = YSG::Afterglow::Builder(data, xAxis, yAxis)
.set_frequent_range(frequent_range)
.set_power_range({0, 160})
.set_frequent_point_size(1024)
.build();
msr = YSG::Muti_Select_Rect::Builder(xAxis, yAxis).build();
msr = YSG::Muti_Select_Rect::Builder(overlay, xAxis, yAxis).build();
}
protected:
void resizeEvent(QResizeEvent* event) override {
@@ -115,10 +121,10 @@ QWidget* IntermediateFrequencyWidget::create_Afterglow_Plot() {
void contextMenuEvent(QContextMenuEvent* event) override {
if (!mMenu) {
auto ws =
bw(cw(ag, -1), "余辉图") +
bw(cw(xAxis), "频率轴") +
bw(cw(yAxis), "功率概率轴") +
bw(cw(msr), "多选框");
bw(cw(ag.get(), -1), "余辉图") +
bw(cw(xAxis.get()), "频率轴") +
bw(cw(yAxis.get()), "功率概率轴") +
bw(cw(msr.get()), "多选框");
mMenu = createMenu(this, ws);
}
mMenu->exec(event->globalPos());
@@ -256,7 +262,7 @@ void IntermediateFrequencyWidget::initMenu() {
auto addInitFrequent = new ValueMenuButton("添加初始频率:%1", fontSize, [frequentStep,this](ValueMenuButton* that, bool add) {
int newFrequent = (int)that->mValue + (add ? frequentStep->mValue : -frequentStep->mValue);
that->setValue(newFrequent);
}, mSpectrogramLine->frequent_range().lower);
}, mSpectrogramLine->frequent_range().origin);
auto btn1_1 = new ValueMenuButton("当前标记:%1", fontSize, [&, markFrequent](ValueMenuButton* that, bool add) {
int index = ((int)that->mValue + (add ? 1 : -1)) % mSpectrogramLine->select_line_marker_size();
that->setValue(index);
@@ -1,6 +1,7 @@
#ifndef IntermediateFrequencyWidget_H
#define IntermediateFrequencyWidget_H
#include "../BaseWidget.h"
#include <memory>
class TextButton;
class DoubleTextButton;
@@ -17,8 +18,8 @@ public:
QPushButton *m1, *m2, *m3, *m4, *m5, *m6;
FrequentShower *mFrequentShower;
ProgressBar *mProgressBar1, *mProgressBar2;
YSG::Spectrum *mSpectrogramLine{};
YSG::Afterglow *mAfterglow{};
std::shared_ptr<YSG::Spectrum> mSpectrogramLine{};
std::shared_ptr<YSG::Afterglow> mAfterglow{};
QWidget* createSpectrogramPowerPlot();
QWidget* create_Afterglow_Plot();
void initMenu();
+60 -48
View File
@@ -15,27 +15,30 @@ static YSG::Range frequent_range = {-12000, 12000};
QWidget* RadioWidget::createSpectrogramPowerPlot() {
class SpectrumPlot : public YSG::Plot {
public:
YSG::Frequent_Axis* xAxis{};
YSG::Axis* yAxis{};
YSG::Muti_Select_Rect* msr{};
YSG::Spectrum* sp{};
std::shared_ptr<YSG::Frequent_Axis> xAxis{};
std::shared_ptr<YSG::Axis> yAxis{};
std::shared_ptr<YSG::Muti_Select_Rect> msr{};
std::shared_ptr<YSG::Spectrum> sp{};
QMenu* mMenu{};
void init() override {
Plot::init();
object_name = "SpectrumPlot";
xAxis = YSG::Frequent_Axis::Builder(this, Qt::Horizontal)
auto data = create_renderable_node(root_renderable(), "DataRenderable");
auto axis = create_renderable_node(root_renderable(), "AxisRenderable");
auto overlay = create_renderable_node(root_renderable(), "OverlayRenderable");
xAxis = YSG::Frequent_Axis::Builder(axis, Qt::Horizontal)
.set_coord_range(frequent_range)
.set_tick_length(-10)
.build();
yAxis = YSG::Axis::Builder(this, Qt::Vertical)
yAxis = YSG::Axis::Builder(axis, Qt::Vertical)
.set_coord_range({max, 0})
.set_unit_text("功率")
.build();
sp = YSG::Spectrum::Builder(xAxis, yAxis)
sp = YSG::Spectrum::Builder(data, xAxis, yAxis)
.set_frequent_range(frequent_range)
.set_frequent_point_size(1024)
.build();
msr = YSG::Muti_Select_Rect::Builder(xAxis, yAxis).build();
msr = YSG::Muti_Select_Rect::Builder(overlay, xAxis, yAxis).build();
if (use_Performance_shower) set_use_performance_shower(true);
}
protected:
@@ -50,10 +53,10 @@ QWidget* RadioWidget::createSpectrogramPowerPlot() {
void contextMenuEvent(QContextMenuEvent* event) override {
if (!mMenu) {
auto ws =
bw(cw(sp, -1), "频谱图") +
bw(cw(xAxis), "频率x轴") +
bw(cw(yAxis), "功率y轴") +
bw(cw(msr), "多选框");
bw(cw(sp.get(), -1), "频谱图") +
bw(cw(xAxis.get()), "频率x轴") +
bw(cw(yAxis.get()), "功率y轴") +
bw(cw(msr.get()), "多选框");
mMenu = createMenu(this, ws);
}
mMenu->exec(event->globalPos());
@@ -72,29 +75,32 @@ QWidget* RadioWidget::createSpectrogramPowerPlot() {
QWidget* RadioWidget::createWaterFallPlot() {
class WaterFallPlot : public YSG::Plot {
public:
YSG::Frequent_Axis* xAxis{};
YSG::Time_Axis* yAxis{};
YSG::Muti_Select_Rect* msr{};
YSG::Waterfall* wf{};
std::shared_ptr<YSG::Frequent_Axis> xAxis{};
std::shared_ptr<YSG::Time_Axis> yAxis{};
std::shared_ptr<YSG::Muti_Select_Rect> msr{};
std::shared_ptr<YSG::Waterfall> wf{};
QMenu* mMenu{};
void init() override {
Plot::init();
object_name = "WaterFallPlot";
xAxis = YSG::Frequent_Axis::Builder(this, Qt::Horizontal)
auto data = create_renderable_node(root_renderable(), "DataRenderable");
auto axis = create_renderable_node(root_renderable(), "AxisRenderable");
auto overlay = create_renderable_node(root_renderable(), "OverlayRenderable");
xAxis = YSG::Frequent_Axis::Builder(axis, Qt::Horizontal)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.set_coord_range(frequent_range)
.build();
yAxis = YSG::Time_Axis::Builder(this, Qt::Vertical)
yAxis = YSG::Time_Axis::Builder(axis, Qt::Vertical)
.set_time_point_size(100)
.build();
wf = YSG::Waterfall::Builder(xAxis, yAxis)
wf = YSG::Waterfall::Builder(data, xAxis, yAxis)
.set_frequent_range(frequent_range)
.set_frequent_point_size(1024)
.set_power_range({0, max})
// .set_time_point_size(100)
.build();
msr = YSG::Muti_Select_Rect::Builder(xAxis, yAxis).build();
msr = YSG::Muti_Select_Rect::Builder(overlay, xAxis, yAxis).build();
if (use_Performance_shower) set_use_performance_shower(true);
}
protected:
@@ -109,10 +115,10 @@ QWidget* RadioWidget::createWaterFallPlot() {
void contextMenuEvent(QContextMenuEvent* event) override {
if (!mMenu) {
auto ws =
bw(cw(wf, -1), "瀑布图") +
bw(cw(xAxis), "频率轴") +
bw(cw(yAxis), "时间轴") +
bw(cw(msr), "多选框");
bw(cw(wf.get(), -1), "瀑布图") +
bw(cw(xAxis.get()), "频率轴") +
bw(cw(yAxis.get()), "时间轴") +
bw(cw(msr.get()), "多选框");
mMenu = createMenu(this, ws);
}
mMenu->exec(event->globalPos());
@@ -126,27 +132,30 @@ QWidget* RadioWidget::createWaterFallPlot() {
QWidget* RadioWidget::createAudioSpectrogramPlot() {
class SpectrumPlot : public YSG::Plot {
public:
YSG::Frequent_Axis* xAxis{};
YSG::Axis* yAxis{};
YSG::Muti_Select_Rect* msr{};
YSG::Spectrum* sp{};
std::shared_ptr<YSG::Frequent_Axis> xAxis{};
std::shared_ptr<YSG::Axis> yAxis{};
std::shared_ptr<YSG::Muti_Select_Rect> msr{};
std::shared_ptr<YSG::Spectrum> sp{};
QMenu* mMenu{};
void init() override {
Plot::init();
object_name = "SpectrumPlot";
xAxis = YSG::Frequent_Axis::Builder(this, Qt::Horizontal)
auto data = create_renderable_node(root_renderable(), "DataRenderable");
auto axis = create_renderable_node(root_renderable(), "AxisRenderable");
auto overlay = create_renderable_node(root_renderable(), "OverlayRenderable");
xAxis = YSG::Frequent_Axis::Builder(axis, Qt::Horizontal)
.set_coord_range({-12000, 12000})
.set_tick_length(-10)
.set_sub_tick_length(-5)
.build();
yAxis = YSG::Axis::Builder(this, Qt::Vertical)
yAxis = YSG::Axis::Builder(axis, Qt::Vertical)
.set_coord_range({12000, -12000})
.set_unit_text("功率").build();
sp = YSG::Spectrum::Builder(xAxis, yAxis)
sp = YSG::Spectrum::Builder(data, xAxis, yAxis)
.set_frequent_range({-12000, 12000})
.set_frequent_point_size(512)
.build();
msr = YSG::Muti_Select_Rect::Builder(xAxis, yAxis).build();
msr = YSG::Muti_Select_Rect::Builder(overlay, xAxis, yAxis).build();
if (use_Performance_shower) set_use_performance_shower(true);
}
protected:
@@ -161,10 +170,10 @@ QWidget* RadioWidget::createAudioSpectrogramPlot() {
void contextMenuEvent(QContextMenuEvent* event) override {
if (!mMenu) {
auto ws =
bw(cw(sp, -1), "频谱图") +
bw(cw(xAxis), "频率x轴") +
bw(cw(yAxis), "功率y轴") +
bw(cw(msr), "多选框");
bw(cw(sp.get(), -1), "频谱图") +
bw(cw(xAxis.get()), "频率x轴") +
bw(cw(yAxis.get()), "功率y轴") +
bw(cw(msr.get()), "多选框");
mMenu = createMenu(this, ws);
}
mMenu->exec(event->globalPos());
@@ -178,24 +187,27 @@ QWidget* RadioWidget::createAudioSpectrogramPlot() {
QWidget* RadioWidget::createTimePowerPlot() {
class AudioPlot : public YSG::Plot {
public:
YSG::Time_Axis* xAxis{};
YSG::Axis* yAxis{};
YSG::Audio_Frequent* audio{};
YSG::Muti_Select_Rect* msr{};
std::shared_ptr<YSG::Time_Axis> xAxis{};
std::shared_ptr<YSG::Axis> yAxis{};
std::shared_ptr<YSG::Audio_Frequent> audio{};
std::shared_ptr<YSG::Muti_Select_Rect> msr{};
QMenu* mMenu{};
void init() override {
Plot::init();
object_name = "AudioPlot";
xAxis = YSG::Time_Axis::Builder(this, Qt::Horizontal)
auto data = create_renderable_node(root_renderable(), "DataRenderable");
auto axis = create_renderable_node(root_renderable(), "AxisRenderable");
auto overlay = create_renderable_node(root_renderable(), "OverlayRenderable");
xAxis = YSG::Time_Axis::Builder(axis, Qt::Horizontal)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.build();
yAxis = YSG::Axis::Builder(this, Qt::Vertical)
yAxis = YSG::Axis::Builder(axis, Qt::Vertical)
.set_coord_range({12000, -12000})
.build();
audio = YSG::Audio_Frequent::Builder(xAxis, yAxis)
audio = YSG::Audio_Frequent::Builder(data, xAxis, yAxis)
.build();
msr = YSG::Muti_Select_Rect::Builder(xAxis, yAxis).build();
msr = YSG::Muti_Select_Rect::Builder(overlay, xAxis, yAxis).build();
if (use_Performance_shower) set_use_performance_shower(true);
}
protected:
@@ -211,10 +223,10 @@ QWidget* RadioWidget::createTimePowerPlot() {
void contextMenuEvent(QContextMenuEvent* event) override {
if (!mMenu) {
auto ws =
bw(cw(audio, -1), "音频图") +
bw(cw(yAxis), "功率y轴") +
bw(cw(xAxis), "时间轴") +
bw(cw(msr), "多选框");
bw(cw(audio.get(), -1), "音频图") +
bw(cw(yAxis.get()), "功率y轴") +
bw(cw(xAxis.get()), "时间轴") +
bw(cw(msr.get()), "多选框");
mMenu = createMenu(this, ws);
}
mMenu->exec(event->globalPos());
+5 -4
View File
@@ -1,6 +1,7 @@
#ifndef RadioWidget_H
#define RadioWidget_H
#include "../BaseWidget.h"
#include <memory>
class TextButton;
@@ -25,10 +26,10 @@ public:
QWidget* createAudioSpectrogramPlot();
QWidget* createTimePowerPlot();
QWidget* createWaterFallPlot();
YSG::Spectrum *mSpectrogramLine{};
YSG::Spectrum* mAudioSpectrogramPlot{};
YSG::Audio_Frequent *mTimePower{};
YSG::Waterfall *mWaterFall{};
std::shared_ptr<YSG::Spectrum> mSpectrogramLine{};
std::shared_ptr<YSG::Spectrum> mAudioSpectrogramPlot{};
std::shared_ptr<YSG::Audio_Frequent> mTimePower{};
std::shared_ptr<YSG::Waterfall> mWaterFall{};
protected:
void focusInEvent(QFocusEvent *event) override;
void keyPressEvent(QKeyEvent *event) override;
+17 -14
View File
@@ -14,26 +14,29 @@
QWidget* SweepFrequencyWidget::createSpectrogramPowerPlot() {
class SweepFrequentPlot : public YSG::Plot {
public:
YSG::Axis* xAxis{};
YSG::Axis* yAxis{};
YSG::Muti_Select_Rect* msr{};
YSG::Sweep_Frequent* sf{};
std::shared_ptr<YSG::Axis> xAxis{};
std::shared_ptr<YSG::Axis> yAxis{};
std::shared_ptr<YSG::Muti_Select_Rect> msr{};
std::shared_ptr<YSG::Sweep_Frequent> sf{};
QMenu* mMenu{};
void init() override {
Plot::init();
object_name = "AxisTestPlot";
xAxis = YSG::Axis::Builder(this, Qt::Horizontal)
auto data = create_renderable_node(root_renderable(), "DataRenderable");
auto axis = create_renderable_node(root_renderable(), "AxisRenderable");
auto overlay = create_renderable_node(root_renderable(), "OverlayRenderable");
xAxis = YSG::Axis::Builder(axis, Qt::Horizontal)
.set_coord_range({0, 100})
.set_tick_length(-10).build();
yAxis = YSG::Axis::Builder(this, Qt::Vertical)
yAxis = YSG::Axis::Builder(axis, Qt::Vertical)
.set_coord_range({100, 0})
.set_tick_length(-10).build();
sf = YSG::Sweep_Frequent::Builder(xAxis, yAxis)
sf = YSG::Sweep_Frequent::Builder(data, xAxis, yAxis)
.set_block_num(200)
.set_block_frequent_point_size(20)
.set_frequent_range({0, 100})
.build();
msr = YSG::Muti_Select_Rect::Builder(xAxis, yAxis).build();
msr = YSG::Muti_Select_Rect::Builder(overlay, xAxis, yAxis).build();
}
protected:
void resizeEvent(QResizeEvent* event) override {
@@ -47,10 +50,10 @@ QWidget* SweepFrequencyWidget::createSpectrogramPowerPlot() {
void contextMenuEvent(QContextMenuEvent* event) override {
if (!mMenu) {
auto ws =
bw(cw(sf, -1), "扫频图") +
bw(cw(xAxis), "x轴") +
bw(cw(yAxis), "y轴") +
bw(cw(msr), "多选框");
bw(cw(sf.get(), -1), "扫频图") +
bw(cw(xAxis.get()), "x轴") +
bw(cw(yAxis.get()), "y轴") +
bw(cw(msr.get()), "多选框");
mMenu = createMenu(this, ws);
}
mMenu->exec(event->globalPos());
@@ -131,11 +134,11 @@ void SweepFrequencyWidget::initMenu() {
auto startFreq = new ValueMenuButton("起始频率:%1 Hz", fontSize, [&](ValueMenuButton* that, bool add) {
that->setValue(that->mValue + (double)(add ? 1 : -1));
}, -1);
startFreq->setValue(mSweepFrequencyLine->frequent_range().lower);
startFreq->setValue(mSweepFrequencyLine->frequent_range().origin);
auto endFreq = new ValueMenuButton("终止频率:%1 Hz", fontSize, [&](ValueMenuButton* that, bool add) {
that->setValue(that->mValue + (double)(add ? 1 : -1));
}, -1);
endFreq->setValue(mSweepFrequencyLine->frequent_range().upper);
endFreq->setValue(mSweepFrequencyLine->frequent_range().target);
auto btn3 = new MenuButton("设置频率", fontSize, [&, startFreq, endFreq]() {
mSweepFrequencyLine->set_frequent_range({startFreq->mValue, endFreq->mValue});
});
+2 -1
View File
@@ -1,6 +1,7 @@
#ifndef SweepFrequencyWidget_H
#define SweepFrequencyWidget_H
#include "../BaseWidget.h"
#include <memory>
class TextButton;
class DoubleTextButton;
class FrequentShower;
@@ -22,7 +23,7 @@ public:
FrequentShower *mSelectValueWidget;
ProgressBar *mProgressBar1, *mProgressBar2;
void initMenu();
YSG::Sweep_Frequent *mSweepFrequencyLine{};
std::shared_ptr<YSG::Sweep_Frequent> mSweepFrequencyLine{};
QWidget* createSpectrogramPowerPlot();
protected:
void focusInEvent(QFocusEvent *event) override;