首次提交
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
#include "SweepFrequencyWidget.h"
|
||||
#include <QHBoxLayout>
|
||||
#include <QVBoxLayout>
|
||||
#include <QVector>
|
||||
#include <QPainter>
|
||||
#include <QDebug>
|
||||
#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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user