#include "SweepFrequencyWidget.h" #include #include #include #include #include #include "../component/FrequentShower.h" #include "../component/ProgressBar.h" #include "../component/ConsoleWidget.h" #include "../component/ShowTime.h" #include "../Global.h" #include "../menu/BaseWidgetMenu.h" #include "YSGraphic_Core/Demo_Gallery/export.h" QWidget* SweepFrequencyWidget::createSpectrogramPowerPlot() { class SweepFrequentPlot : public YSG::Plot { public: YSG::Axis* xAxis{}; YSG::Axis* yAxis{}; YSG::Muti_Select_Rect* msr{}; YSG::Sweep_Frequent* sf{}; QMenu* mMenu{}; void init() override { Plot::init(); object_name = "AxisTestPlot"; xAxis = YSG::Axis::Builder(this, Qt::Horizontal) .set_coord_range({0, 100}) .set_tick_length(-10).build(); yAxis = YSG::Axis::Builder(this, Qt::Vertical) .set_coord_range({100, 0}) .set_tick_length(-10).build(); sf = YSG::Sweep_Frequent::Builder(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(); } protected: void resizeEvent(QResizeEvent* event) override { xAxis->set_x(0); xAxis->set_y(height() - 1); xAxis->set_pixel_size(width()); yAxis->set_x(0); yAxis->set_y(0); yAxis->set_pixel_size(height()); } void contextMenuEvent(QContextMenuEvent* event) override { if (!mMenu) { auto ws = bw(cw(sf, -1), "扫频图") + bw(cw(xAxis), "x轴") + bw(cw(yAxis), "y轴") + bw(cw(msr), "多选框"); mMenu = createMenu(this, ws); } mMenu->exec(event->globalPos()); } }; auto w = new SweepFrequentPlot; w->init(); mSweepFrequencyLine = w->sf; return w; } //mAM, mATU, mVSQL, mNB, mNR, mDNF, mPRE, mATT, mSPL, mFIL1, mAGC_A SweepFrequencyWidget::SweepFrequencyWidget(QWidget* parent) : BaseWidget(parent) { setObjectName("扫频界面"); int fontSize = 20; m1 = createNormal("RF Gain\n62", fontSize); m2 = createNormal("FFT SPAN\n100K", fontSize); m3 = createNormal("频率表\n(12)89.6MHZ", fontSize); m4 = createNormal("MODEM\nRTTY", fontSize); mSelectValueWidget = new FrequentShower(this); mProgressBar1 = new ProgressBar({ {"S", Qt::black}, {"3", Qt::black}, {"5", Qt::black}, {"7", Qt::black}, {"9", Qt::black}, {"+20", Qt::yellow}, {"+40", Qt::yellow}, {"+60", Qt::red}, }, this); mProgressBar2 = new ProgressBar({ {"1", Qt::black}, {"2", Qt::yellow}, {"3", Qt::red}, {">5", Qt::red}, }, this); auto main = createVBoxLayout({}, this); main->addStretch(1); { // 中心Layout auto center = createHBoxLayout(); main->addLayout(center, 7); auto front = createVBoxLayout(); center->addLayout(front, 1); front->addWidget(m1, 3); front->addStretch(1); front->addWidget(m2, 3); center->addSpacing(4); auto middle = createVBoxLayout(); center->addLayout(middle, 9); middle->addStretch(1); middle->addWidget(mSelectValueWidget, 4); auto middleH = createHBoxLayout(); middle->addLayout(middleH, 2); middleH->addWidget(mProgressBar1, 5); middleH->addStretch(1); middleH->addWidget(mProgressBar2, 3); center->addStretch(5); center->addSpacing(4); auto back1 = createVBoxLayout(); center->addLayout(back1, 1); back1->addWidget(m3, 3); back1->addStretch(1); back1->addWidget(m4, 3); } main->addStretch(1); main->addSpacing(8); //main->addWidget(new TestWidget, 24); main->addWidget(createSpectrogramPowerPlot(), 24); initMenu(); } SweepFrequencyWidget::~SweepFrequencyWidget() {} void SweepFrequencyWidget::focusInEvent(QFocusEvent* event) { QWidget::focusInEvent(event); mSelectValueWidget->setFocus(); } void SweepFrequencyWidget::initMenu() { int fontSize = 30; 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); 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); auto btn3 = new MenuButton("设置频率", fontSize, [&, startFreq, endFreq]() { mSweepFrequencyLine->set_frequent_range({startFreq->mValue, endFreq->mValue}); }); mBaseWidgetMenu->addMenuButtonOnLayout1({startFreq, endFreq, btn3}, 2); }