#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/DemoGallery/Tool.h" QWidget* SweepFrequencyWidget::createSpectrogramPowerPlot() { class SweepFrequentPlot : public YSG::Plot { public: YSG::Axis *xAxis{}; YSG::Axis *yAxis{}; YSG::MutiSelectRect *msr{}; YSG::SweepFrequent* sf{}; QMenu *mMenu{}; void init() override { Plot::init(); mObjectName = "AxisTestPlot"; bindRenderThread(mObjectName + "Thread"); xAxis = YSG::Axis::Builder(this, Qt::Horizontal) .set_coordRange({0, 100}) .set_tickLength(-10).build(); yAxis = YSG::Axis::Builder(this, Qt::Vertical) .set_coordRange({100, 0}) .set_tickLength(-10).build(); sf = YSG::SweepFrequent::Builder(xAxis, yAxis) .set_blockNum(200) .set_blockFrequentPointSize(20) .set_frequentRange({0 , 100}) .build(); msr = YSG::MutiSelectRect::Builder(xAxis, yAxis).build(); } protected: void resizeEvent(QResizeEvent* event) override { xAxis->set_x(0); xAxis->set_y(height() - 1); xAxis->set_pixelSize(width()); yAxis->set_x(0); yAxis->set_y(0); yAxis->set_pixelSize(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->frequentRange().lower); auto endFreq = new ValueMenuButton("终止频率:%1 Hz", fontSize, [&](ValueMenuButton* that, bool add){ that->setValue(that->mValue + (double)(add ? 1 : -1)); }, -1); endFreq->setValue(mSweepFrequencyLine->frequentRange().upper); auto btn3 = new MenuButton("设置频率", fontSize, [&, startFreq, endFreq](){ mSweepFrequencyLine->set_frequentRange({startFreq->mValue, endFreq->mValue}); }); mBaseWidgetMenu->addMenuButtonOnLayout1({startFreq, endFreq, btn3}, 2); }