首次提交
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
#ifndef a_采集预处理_H
|
||||
#define a_采集预处理_H
|
||||
#include "function_global.h"
|
||||
class T_采集预处理_瀑布图 : public YSG::Plot {
|
||||
public:
|
||||
YSG::FrequentAxis* xAxis{};
|
||||
YSG::TimeAxis* yAxis{};
|
||||
YSG::MutiSelectRect* msr{};
|
||||
YSG::WaterFall* wf{};
|
||||
QMenu* mMenu{};
|
||||
void init() override {
|
||||
Plot::init();
|
||||
mObjectName = "WaterFallPlot";
|
||||
bindRenderThread(mObjectName + "Thread");
|
||||
xAxis = YSG::FrequentAxis::Builder(this, Qt::Horizontal).set_tickLength(-10).set_subTickLength(-5).build();
|
||||
yAxis = YSG::TimeAxis::Builder(this, Qt::Vertical).build();
|
||||
wf = YSG::WaterFall::Builder(xAxis, yAxis).set_layerName("plottable").set_frequentRange({0, 20}).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());
|
||||
// wf->set_frequentPointSize(wf->frequentAxis()->getPixelPointSize());
|
||||
wf->set_frequentPointSize(width());
|
||||
}
|
||||
void contextMenuEvent(QContextMenuEvent* event) override {
|
||||
if (!mMenu)
|
||||
{
|
||||
auto ws =
|
||||
bw(cw(wf, -1), "瀑布图") + bw(cw(xAxis), "频率轴") + bw(cw(yAxis), "时间轴") + bw(cw(msr), "多选框");
|
||||
mMenu = createMenu(this, ws);
|
||||
}
|
||||
mMenu->exec(event->globalPos());
|
||||
}
|
||||
};
|
||||
class T_采集预处理_频谱图 : public YSG::Plot {
|
||||
public:
|
||||
YSG::FrequentAxis* xAxis{};
|
||||
YSG::Axis* yAxis{};
|
||||
YSG::MutiSelectRect* msr{};
|
||||
YSG::Spectrum* sp{};
|
||||
QMenu* mMenu{};
|
||||
void init() override {
|
||||
Plot::init();
|
||||
mObjectName = "SpectrumPlot";
|
||||
bindRenderThread(mObjectName + "Thread");
|
||||
xAxis = YSG::FrequentAxis::Builder(this, Qt::Horizontal)
|
||||
.set_coordRange({0, 100})
|
||||
.set_tickLength(-10)
|
||||
.set_subTickLength(-5)
|
||||
.set_use_wheel(true)
|
||||
.set_use_drag(true)
|
||||
.build();
|
||||
yAxis = YSG::Axis::Builder(this, Qt::Vertical)
|
||||
.set_coordRange({100, 0})
|
||||
.set_unitText("功率")
|
||||
.set_use_drag(true)
|
||||
.build();
|
||||
sp = YSG::Spectrum::Builder(xAxis, yAxis).set_frequentRange({0, 100}).build();
|
||||
msr = YSG::MutiSelectRect::Builder(xAxis, yAxis).build();
|
||||
}
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent* event) override {
|
||||
int leftMargin = 20, rightMargin = 20, topMargin = 20, bottomMargin = 20;
|
||||
int w = width() - leftMargin - rightMargin;
|
||||
int h = height() - topMargin - bottomMargin;
|
||||
xAxis->set_x(leftMargin);
|
||||
xAxis->set_y(height() - bottomMargin);
|
||||
xAxis->set_pixelSize(w);
|
||||
yAxis->set_x(leftMargin);
|
||||
yAxis->set_y(topMargin);
|
||||
yAxis->set_pixelSize(h);
|
||||
sp->set_frequentPointSize(sp->frequentAxis()->getPixelPointSize());
|
||||
}
|
||||
void contextMenuEvent(QContextMenuEvent* event) override {
|
||||
if (!mMenu)
|
||||
{
|
||||
auto ws =
|
||||
bw(cw(sp, -1), "频谱图") + bw(cw(xAxis), "频率x轴") + bw(cw(yAxis), "功率y轴") + bw(cw(msr), "多选框");
|
||||
mMenu = createMenu(this, ws);
|
||||
}
|
||||
mMenu->exec(event->globalPos());
|
||||
}
|
||||
};
|
||||
class 采集预处理 : public BaseWidget {
|
||||
public:
|
||||
QHBoxLayout* mainLayout{};
|
||||
T_采集预处理_瀑布图* m_瀑布图{};
|
||||
T_采集预处理_频谱图* m_频谱图{};
|
||||
QVBoxLayout* createV();
|
||||
采集预处理();
|
||||
void paintEvent(QPaintEvent* event) override;
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,62 @@
|
||||
#ifndef a_信号侦察_H
|
||||
#define a_信号侦察_H
|
||||
#include "function_global.h"
|
||||
class T_信号侦察_频谱图 : public YSG::Plot {
|
||||
public:
|
||||
YSG::FrequentAxis* xAxis{};
|
||||
YSG::Axis* yAxis{};
|
||||
YSG::MutiSelectRect* msr{};
|
||||
YSG::Spectrum* sp{};
|
||||
QMenu* mMenu{};
|
||||
void init() override {
|
||||
Plot::init();
|
||||
mObjectName = "SpectrumPlot";
|
||||
bindRenderThread(mObjectName + "Thread");
|
||||
xAxis = YSG::FrequentAxis::Builder(this, Qt::Horizontal)
|
||||
.set_coordRange({0, 100})
|
||||
.set_tickLength(-10)
|
||||
.set_subTickLength(-5)
|
||||
.set_use_wheel(true)
|
||||
.set_use_drag(true)
|
||||
.build();
|
||||
yAxis = YSG::Axis::Builder(this, Qt::Vertical)
|
||||
.set_coordRange({100, 0})
|
||||
.set_unitText("功率")
|
||||
.set_use_drag(true)
|
||||
.build();
|
||||
sp = YSG::Spectrum::Builder(xAxis, yAxis).set_frequentRange({0, 100}).build();
|
||||
msr = YSG::MutiSelectRect::Builder(xAxis, yAxis).build();
|
||||
}
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent* event) override {
|
||||
int leftMargin = 20, rightMargin = 20, topMargin = 20, bottomMargin = 20;
|
||||
int w = width() - leftMargin - rightMargin;
|
||||
int h = height() - topMargin - bottomMargin;
|
||||
xAxis->set_x(leftMargin);
|
||||
xAxis->set_y(height() - bottomMargin);
|
||||
xAxis->set_pixelSize(w);
|
||||
yAxis->set_x(leftMargin);
|
||||
yAxis->set_y(topMargin);
|
||||
yAxis->set_pixelSize(h);
|
||||
sp->set_frequentPointSize(sp->frequentAxis()->getPixelPointSize());
|
||||
}
|
||||
void contextMenuEvent(QContextMenuEvent* event) override {
|
||||
if (!mMenu)
|
||||
{
|
||||
auto ws =
|
||||
bw(cw(sp, -1), "频谱图") + bw(cw(xAxis), "频率x轴") + bw(cw(yAxis), "功率y轴") + bw(cw(msr), "多选框");
|
||||
mMenu = createMenu(this, ws);
|
||||
}
|
||||
mMenu->exec(event->globalPos());
|
||||
}
|
||||
};
|
||||
class 信号侦察 : public BaseWidget {
|
||||
public:
|
||||
QHBoxLayout* mainLayout{};
|
||||
T_信号侦察_频谱图* m_频谱图{};
|
||||
TreeView *treeView{};
|
||||
QVBoxLayout* createV();
|
||||
void paintEvent(QPaintEvent* event) override;
|
||||
信号侦察();
|
||||
};
|
||||
#endif // 信号侦察_H
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifndef a_信号处理_H
|
||||
#define a_信号处理_H
|
||||
#include "function_global.h"
|
||||
class 信号处理 : public BaseWidget {
|
||||
public:
|
||||
void paintEvent(QPaintEvent* event) override;
|
||||
QVBoxLayout* createV();
|
||||
QHBoxLayout* mainLayout{};
|
||||
TreeView* treeView{};
|
||||
信号处理();
|
||||
};
|
||||
#endif // 信号处理_H
|
||||
@@ -0,0 +1,62 @@
|
||||
#ifndef a_信号生成_H
|
||||
#define a_信号生成_H
|
||||
#include "function_global.h"
|
||||
class T_信号生成_频谱图 : public YSG::Plot {
|
||||
public:
|
||||
YSG::FrequentAxis* xAxis{};
|
||||
YSG::Axis* yAxis{};
|
||||
YSG::MutiSelectRect* msr{};
|
||||
YSG::Spectrum* sp{};
|
||||
QMenu* mMenu{};
|
||||
void init() override {
|
||||
Plot::init();
|
||||
mObjectName = "SpectrumPlot";
|
||||
bindRenderThread(mObjectName + "Thread");
|
||||
xAxis = YSG::FrequentAxis::Builder(this, Qt::Horizontal)
|
||||
.set_coordRange({0, 100})
|
||||
.set_tickLength(-10)
|
||||
.set_subTickLength(-5)
|
||||
.set_use_wheel(true)
|
||||
.set_use_drag(true)
|
||||
.build();
|
||||
yAxis = YSG::Axis::Builder(this, Qt::Vertical)
|
||||
.set_coordRange({100, 0})
|
||||
.set_unitText("功率")
|
||||
.set_use_drag(true)
|
||||
.build();
|
||||
sp = YSG::Spectrum::Builder(xAxis, yAxis).set_frequentRange({0, 100}).build();
|
||||
msr = YSG::MutiSelectRect::Builder(xAxis, yAxis).build();
|
||||
}
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent* event) override {
|
||||
int leftMargin = 20, rightMargin = 20, topMargin = 20, bottomMargin = 20;
|
||||
int w = width() - leftMargin - rightMargin;
|
||||
int h = height() - topMargin - bottomMargin;
|
||||
xAxis->set_x(leftMargin);
|
||||
xAxis->set_y(height() - bottomMargin);
|
||||
xAxis->set_pixelSize(w);
|
||||
yAxis->set_x(leftMargin);
|
||||
yAxis->set_y(topMargin);
|
||||
yAxis->set_pixelSize(h);
|
||||
sp->set_frequentPointSize(sp->frequentAxis()->getPixelPointSize());
|
||||
}
|
||||
void contextMenuEvent(QContextMenuEvent* event) override {
|
||||
if (!mMenu)
|
||||
{
|
||||
auto ws =
|
||||
bw(cw(sp, -1), "频谱图") + bw(cw(xAxis), "频率x轴") + bw(cw(yAxis), "功率y轴") + bw(cw(msr), "多选框");
|
||||
mMenu = createMenu(this, ws);
|
||||
}
|
||||
mMenu->exec(event->globalPos());
|
||||
}
|
||||
};
|
||||
class 信号生成 : public BaseWidget {
|
||||
public:
|
||||
void paintEvent(QPaintEvent* event) override;
|
||||
QHBoxLayout* mainLayout{};
|
||||
QVBoxLayout* createV();
|
||||
TreeView* treeView{};
|
||||
T_信号生成_频谱图* m_频谱图{};
|
||||
信号生成();
|
||||
};
|
||||
#endif // 信号生成_H
|
||||
@@ -0,0 +1,62 @@
|
||||
#ifndef a_信号对消_H
|
||||
#define a_信号对消_H
|
||||
#include "function_global.h"
|
||||
class T_信号对消_频谱图 : public YSG::Plot {
|
||||
public:
|
||||
YSG::FrequentAxis* xAxis{};
|
||||
YSG::Axis* yAxis{};
|
||||
YSG::MutiSelectRect* msr{};
|
||||
YSG::Spectrum* sp{};
|
||||
QMenu* mMenu{};
|
||||
void init() override {
|
||||
Plot::init();
|
||||
mObjectName = "SpectrumPlot";
|
||||
bindRenderThread(mObjectName + "Thread");
|
||||
xAxis = YSG::FrequentAxis::Builder(this, Qt::Horizontal)
|
||||
.set_coordRange({0, 100})
|
||||
.set_tickLength(-10)
|
||||
.set_subTickLength(-5)
|
||||
.set_use_wheel(true)
|
||||
.set_use_drag(true)
|
||||
.build();
|
||||
yAxis = YSG::Axis::Builder(this, Qt::Vertical)
|
||||
.set_coordRange({100, 0})
|
||||
.set_unitText("功率")
|
||||
.set_use_drag(true)
|
||||
.build();
|
||||
sp = YSG::Spectrum::Builder(xAxis, yAxis).set_frequentRange({0, 100}).build();
|
||||
msr = YSG::MutiSelectRect::Builder(xAxis, yAxis).build();
|
||||
}
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent* event) override {
|
||||
int leftMargin = 20, rightMargin = 20, topMargin = 20, bottomMargin = 20;
|
||||
int w = width() - leftMargin - rightMargin;
|
||||
int h = height() - topMargin - bottomMargin;
|
||||
xAxis->set_x(leftMargin);
|
||||
xAxis->set_y(height() - bottomMargin);
|
||||
xAxis->set_pixelSize(w);
|
||||
yAxis->set_x(leftMargin);
|
||||
yAxis->set_y(topMargin);
|
||||
yAxis->set_pixelSize(h);
|
||||
sp->set_frequentPointSize(sp->frequentAxis()->getPixelPointSize());
|
||||
}
|
||||
void contextMenuEvent(QContextMenuEvent* event) override {
|
||||
if (!mMenu)
|
||||
{
|
||||
auto ws =
|
||||
bw(cw(sp, -1), "频谱图") + bw(cw(xAxis), "频率x轴") + bw(cw(yAxis), "功率y轴") + bw(cw(msr), "多选框");
|
||||
mMenu = createMenu(this, ws);
|
||||
}
|
||||
mMenu->exec(event->globalPos());
|
||||
}
|
||||
};
|
||||
class 信号对消 : public BaseWidget {
|
||||
public:
|
||||
void paintEvent(QPaintEvent* event) override;
|
||||
QHBoxLayout* mainLayout{};
|
||||
QVBoxLayout* createV();
|
||||
T_信号对消_频谱图* m_频谱图{};
|
||||
TreeView *treeView{};
|
||||
信号对消();
|
||||
};
|
||||
#endif // 信号对消_H
|
||||
@@ -0,0 +1,12 @@
|
||||
#ifndef a_存储列表_H
|
||||
#define a_存储列表_H
|
||||
#include "function_global.h"
|
||||
class 存储列表 : public BaseWidget {
|
||||
public:
|
||||
void paintEvent(QPaintEvent* event) override;
|
||||
QHBoxLayout* mainLayout{};
|
||||
CustomTableView* m_table{};
|
||||
QVBoxLayout* createV();
|
||||
存储列表();
|
||||
};
|
||||
#endif // 存储列表_H
|
||||
@@ -0,0 +1,14 @@
|
||||
#include "function_global.h"
|
||||
#ifndef b0_升级记录_H
|
||||
#define b0_升级记录_H
|
||||
|
||||
|
||||
|
||||
|
||||
class 升级记录 : QWidget{
|
||||
public:
|
||||
QString content;
|
||||
Button *confirm{};
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,253 @@
|
||||
#include "../MainWindow.h"
|
||||
#include "a2_信号侦察.h"
|
||||
#include "a3_信号处理.h"
|
||||
#include "a4_信号生成.h"
|
||||
#include "a5_信号对消.h"
|
||||
#include "function.export.h"
|
||||
#include "a6_存储列表.h"
|
||||
Data_source data_source;
|
||||
void Data_source::set_root(MainWindow* root) { m_root = root; }
|
||||
Data_source::Data_source() {}
|
||||
// 1
|
||||
采集预处理::采集预处理() {
|
||||
mainLayout = new QHBoxLayout(this);
|
||||
mainLayout->setMargin(0);
|
||||
mainLayout->addLayout(createV(), 3);
|
||||
auto fw = new FunctionWidget();
|
||||
auto 中心频率 = create_input("中心频率", "MHZ");
|
||||
auto 带宽 = create_input("带宽", "MHZ");
|
||||
auto 采样率 = create_input("采样率", "MHZ");
|
||||
auto layout = new QVBoxLayout;
|
||||
layout->setSpacing(0);
|
||||
layout->addLayout(中心频率);
|
||||
layout->addSpacing(10);
|
||||
layout->addLayout(带宽);
|
||||
layout->addSpacing(10);
|
||||
layout->addLayout(采样率);
|
||||
fw->init("预处理参数", "展示设备宽采效果", layout);
|
||||
mainLayout->addWidget(fw, 1);
|
||||
}
|
||||
QVBoxLayout* 采集预处理::createV() {
|
||||
QVBoxLayout* ret;
|
||||
ret = new QVBoxLayout();
|
||||
m_频谱图 = new T_采集预处理_频谱图;
|
||||
m_频谱图->init();
|
||||
ret->addWidget(m_频谱图);
|
||||
m_瀑布图 = new T_采集预处理_瀑布图;
|
||||
m_瀑布图->init();
|
||||
ret->addWidget(m_瀑布图);
|
||||
return ret;
|
||||
}
|
||||
void 采集预处理::paintEvent(QPaintEvent* event) {
|
||||
// QPainter painter(this);
|
||||
// painter.fillRect(event->rect(), Qt::white);
|
||||
QWidget::paintEvent(event);
|
||||
}
|
||||
|
||||
// 2
|
||||
QVBoxLayout* 信号侦察::createV() {
|
||||
auto ret = new QVBoxLayout;
|
||||
m_频谱图 = new T_信号侦察_频谱图();
|
||||
m_频谱图->init();
|
||||
ret->addWidget(m_频谱图, 1);
|
||||
QStringList headers = {"子带通道", "频点", "出联状态", "锁定状态", "出联时间", "出联时长", "符号率", "频值", "EbNo", "误码率", "电平", "帧定时"};
|
||||
TreeModel* model = new TreeModel(headers);
|
||||
QStringList parentData = {"父节点1", "数据2", "数据3"};
|
||||
model->addNode(parentData);
|
||||
QModelIndex parentIndex = model->index(0, 0);
|
||||
QStringList childData = {"子节点1", "数据2", "数据3"};
|
||||
model->addNode(childData, parentIndex);
|
||||
treeView = new TreeView;
|
||||
treeView->setModel(model);
|
||||
TreeDelegate* delegate = new TreeDelegate;
|
||||
treeView->setItemDelegate(delegate);
|
||||
treeView->expandAll();
|
||||
ret->addWidget(treeView, 1);
|
||||
return ret;
|
||||
}
|
||||
|
||||
信号侦察::信号侦察() {
|
||||
mainLayout = new QHBoxLayout(this);
|
||||
mainLayout->setMargin(0);mainLayout->setMargin(0);
|
||||
mainLayout->addLayout(createV(), 3);
|
||||
auto fw = new FunctionWidget();
|
||||
auto layout = new QVBoxLayout;
|
||||
layout->setSpacing(0);
|
||||
fw->init("侦察参数", "展示参数信息", layout);
|
||||
layout->addLayout(create_check_box("载波通道", {"221", "222"}));
|
||||
layout->addLayout(create_input("中心频率", "MHz"));
|
||||
layout->addLayout(create_input("带宽", "KHz"));
|
||||
layout->addLayout(create_input("采样率", "KHz"));
|
||||
layout->addLayout(create_check_box("调制方式", {"221", "222"}));
|
||||
layout->addLayout(create_input("符号率", "KBd"));
|
||||
layout->addLayout(create_check_box("译码方式", {"TPC"}));
|
||||
mainLayout->addWidget(fw, 1);
|
||||
}
|
||||
void 信号侦察::paintEvent(QPaintEvent* event) {
|
||||
QPainter painter(this);
|
||||
//painter.fillRect(event->rect(), Qt::yellow);
|
||||
painter.end();
|
||||
QWidget::paintEvent(event);
|
||||
}
|
||||
|
||||
|
||||
// 3
|
||||
信号处理::信号处理() {
|
||||
mainLayout = new QHBoxLayout(this);
|
||||
mainLayout->setMargin(0);
|
||||
mainLayout->addLayout(createV(), 3);
|
||||
auto fw = new FunctionWidget();
|
||||
auto layout = new QVBoxLayout;
|
||||
layout->setSpacing(0);
|
||||
layout->addLayout(create_check_box("工作模式", {"信号侦察"}));
|
||||
layout->addLayout(create_check_box("工作模式", {"信号侦察"}));
|
||||
fw->init("处理参数", "对用户或载波解调译码分析", layout);
|
||||
mainLayout->addWidget(fw, 1);
|
||||
}
|
||||
void 信号处理::paintEvent(QPaintEvent* event) {
|
||||
QPainter painter(this);
|
||||
//painter.fillRect(event->rect(), Qt::green);
|
||||
painter.end();
|
||||
QWidget::paintEvent(event);
|
||||
}
|
||||
QVBoxLayout* 信号处理::createV() {
|
||||
QVBoxLayout* ret;
|
||||
ret = new QVBoxLayout();
|
||||
ret->addWidget(new QWidget, 1);
|
||||
QStringList headers = {"子带通道", "频点", "出联状态", "锁定状态", "出联时间", "出联时长", "符号率", "频值", "EbNo", "误码率", "电平", "帧定时"};
|
||||
TreeModel* model = new TreeModel(headers);
|
||||
QStringList parentData = {"父节点1", "数据2", "数据3"};
|
||||
model->addNode(parentData);
|
||||
QModelIndex parentIndex = model->index(0, 0);
|
||||
QStringList childData = {"子节点1", "数据2", "数据3"};
|
||||
model->addNode(childData, parentIndex);
|
||||
treeView = new TreeView;
|
||||
treeView->setModel(model);
|
||||
TreeDelegate* delegate = new TreeDelegate;
|
||||
treeView->setItemDelegate(delegate);
|
||||
treeView->expandAll();
|
||||
ret->addWidget(treeView, 1);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 4
|
||||
信号生成::信号生成() {
|
||||
mainLayout = new QHBoxLayout(this);
|
||||
mainLayout->setMargin(0);
|
||||
mainLayout->addLayout(createV(), 3);
|
||||
auto fw = new FunctionWidget();
|
||||
auto layout = new QVBoxLayout;
|
||||
layout->setSpacing(0);
|
||||
layout->addLayout(create_check_box("发射模式", {"多载波合路"}));
|
||||
layout->addLayout(create_check_box("数据源", {"本地样本"}));
|
||||
layout->addLayout(create_check_box("切入点", {"HDLC封装"}));
|
||||
layout->addLayout(create_check_box("信道编码", {"VIT"}));
|
||||
// TODO 80比特帧封装
|
||||
// TODO 符号映射
|
||||
layout->addLayout(create_check_box("调制类型", {"BPSK"}));
|
||||
layout->addLayout(create_input("发射时刻", {""}));
|
||||
// TODO 发射样本
|
||||
fw->init("生成参数", "支持", layout);
|
||||
mainLayout->addWidget(fw, 1);
|
||||
}
|
||||
|
||||
// 4
|
||||
void 信号生成::paintEvent(QPaintEvent* event) {
|
||||
QPainter painter(this);
|
||||
//painter.fillRect(event->rect(), Qt::red);
|
||||
painter.end();
|
||||
QWidget::paintEvent(event);
|
||||
}
|
||||
|
||||
QVBoxLayout* 信号生成::createV() {
|
||||
auto ret = new QVBoxLayout;
|
||||
m_频谱图 = new T_信号生成_频谱图();
|
||||
m_频谱图->init();
|
||||
ret->addWidget(m_频谱图, 1);
|
||||
QStringList headers = {"载波通道", "数据源"};
|
||||
TreeModel* model = new TreeModel(headers);
|
||||
QStringList parentData = {"父节点1", "数据2", "数据3"};
|
||||
model->addNode(parentData);
|
||||
QModelIndex parentIndex = model->index(0, 0);
|
||||
QStringList childData = {"子节点1", "数据2", "数据3"};
|
||||
model->addNode(childData, parentIndex);
|
||||
treeView = new TreeView;
|
||||
treeView->setModel(model);
|
||||
TreeDelegate* delegate = new TreeDelegate;
|
||||
treeView->setItemDelegate(delegate);
|
||||
treeView->expandAll();
|
||||
ret->addWidget(treeView, 1);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// 5
|
||||
信号对消::信号对消() {
|
||||
mainLayout = new QHBoxLayout(this);
|
||||
mainLayout->setMargin(0);
|
||||
mainLayout->addLayout(createV(), 3);
|
||||
auto fw = new FunctionWidget();
|
||||
auto layout = new QVBoxLayout;
|
||||
layout->setSpacing(0);
|
||||
layout->addLayout(create_check_box("时差", {"10ms", "20ms"}));
|
||||
layout->addLayout(create_check_box("频差", {"100Hz"}));
|
||||
layout->addLayout(create_check_box("搜索范围", {"30ms"}));
|
||||
fw->init("对消参数", "对40M内发射信号对消", layout);
|
||||
mainLayout->addWidget(fw, 1);
|
||||
}
|
||||
void 信号对消::paintEvent(QPaintEvent* event) {
|
||||
QPainter painter(this);
|
||||
//painter.fillRect(event->rect(), Qt::blue);
|
||||
painter.end();
|
||||
QWidget::paintEvent(event);
|
||||
}
|
||||
|
||||
QVBoxLayout* 信号对消::createV() {
|
||||
auto ret = new QVBoxLayout;
|
||||
m_频谱图 = new T_信号对消_频谱图();
|
||||
m_频谱图->init();
|
||||
ret->addWidget(m_频谱图, 1);
|
||||
QStringList headers = {"子带通道", "频点", "出联状态", "锁定状态", "出联时间", "出联时长", "符号率", "频值", "EbNo", "误码率", "电平", "帧定时"};
|
||||
TreeModel* model = new TreeModel(headers);
|
||||
QStringList parentData = {"父节点1", "数据2", "数据3"};
|
||||
model->addNode(parentData);
|
||||
QModelIndex parentIndex = model->index(0, 0);
|
||||
QStringList childData = {"子节点1", "数据2", "数据3"};
|
||||
model->addNode(childData, parentIndex);
|
||||
treeView = new TreeView;
|
||||
treeView->setModel(model);
|
||||
TreeDelegate* delegate = new TreeDelegate;
|
||||
treeView->setItemDelegate(delegate);
|
||||
treeView->expandAll();
|
||||
ret->addWidget(treeView, 1);
|
||||
return ret;
|
||||
}
|
||||
// 6
|
||||
存储列表::存储列表() {
|
||||
mainLayout = new QHBoxLayout(this);
|
||||
mainLayout->setMargin(0);
|
||||
mainLayout->addLayout(createV(), 3);
|
||||
auto fw = new FunctionWidget();
|
||||
auto layout = new QVBoxLayout;
|
||||
layout->setSpacing(0);
|
||||
layout->addLayout(create_check_box("工作模式", {"信号侦察"}));
|
||||
layout->addLayout(create_check_box("工作模式", {"信号侦察"}));
|
||||
fw->init("处理参数", "对用户或载波解调译码分析", layout);
|
||||
mainLayout->addWidget(fw, 1);
|
||||
}
|
||||
void 存储列表::paintEvent(QPaintEvent* event) {
|
||||
QPainter painter(this);
|
||||
//painter.fillRect(event->rect(), Qt::gray);
|
||||
painter.end();
|
||||
QWidget::paintEvent(event);
|
||||
}
|
||||
QVBoxLayout* 存储列表::createV() {
|
||||
auto ret = new QVBoxLayout;
|
||||
m_table = new CustomTableView(this);
|
||||
auto* model = new CustomModel(this);
|
||||
auto* delegate = new CustomTableDelegate(this);
|
||||
m_table->setModel(model);
|
||||
m_table->setItemDelegate(delegate);
|
||||
ret->addWidget(m_table);
|
||||
return ret;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef CMAKEUSERPRESETS_JSON_FUNCTION_EXPORT_H
|
||||
#define CMAKEUSERPRESETS_JSON_FUNCTION_EXPORT_H
|
||||
#include "a1_采集预处理.h"
|
||||
#include "a2_信号侦察.h"
|
||||
#include "a3_信号处理.h"
|
||||
#include "a4_信号生成.h"
|
||||
#include "a5_信号对消.h"
|
||||
#include "a6_存储列表.h"
|
||||
#include "b0_升级记录.h"
|
||||
class MainWindow;
|
||||
class Data_source {
|
||||
public:
|
||||
void set_root(MainWindow* root);
|
||||
Data_source();
|
||||
protected:
|
||||
MainWindow* m_root{};
|
||||
};
|
||||
extern Data_source data_source;
|
||||
#endif
|
||||
@@ -0,0 +1,88 @@
|
||||
#ifndef FUNCTION_GLOBAL_H
|
||||
#define FUNCTION_GLOBAL_H
|
||||
#include <QPaintEvent>
|
||||
#include <QPainter>
|
||||
#include <QWidget>
|
||||
#include "DemoGallery/Tool.h"
|
||||
#include "component/Button.h"
|
||||
#include "component/ComboBox.h"
|
||||
#include "component/Input.h"
|
||||
#include "../Tree_Table.h"
|
||||
#include "../Table.h"
|
||||
|
||||
|
||||
extern QColor base;
|
||||
class FunctionWidget : public QWidget {
|
||||
public:
|
||||
QLabel* title{};
|
||||
QLabel* explain{};
|
||||
QVBoxLayout* layout{};
|
||||
Button* btn{};
|
||||
FunctionWidget() {}
|
||||
void init(const QString& title_text, const QString& explain_text, QLayout* l) {
|
||||
this->title = new QLabel(title_text);
|
||||
this->explain = new QLabel(explain_text);
|
||||
layout = new QVBoxLayout(this);
|
||||
layout->addLayout(create_line_1());
|
||||
btn = new Button();
|
||||
btn->content.text = new Text(QString("确定"), QPen(Qt::white));
|
||||
layout->addLayout(l);
|
||||
// qDebug() << " btn->sizeHint() " << btn->sizeHint();
|
||||
layout->addStretch(1);
|
||||
layout->addWidget(btn);
|
||||
btn->background.set_color(base);
|
||||
}
|
||||
QHBoxLayout* create_line_1() {
|
||||
auto ret = new QHBoxLayout;
|
||||
ret->addWidget(this->title, 1);
|
||||
ret->addWidget(this->explain, 1);
|
||||
return ret;
|
||||
}
|
||||
void paintEvent(QPaintEvent* event) override {
|
||||
QPainter painter(this);
|
||||
painter.setRenderHints(QPainter::Antialiasing);
|
||||
painter.setPen(Qt::NoPen);
|
||||
painter.setBrush(Qt::white);
|
||||
painter.drawRoundedRect(rect(), 8, 8);
|
||||
painter.end();
|
||||
}
|
||||
};
|
||||
class BaseWidget : public QWidget {
|
||||
public:
|
||||
};
|
||||
static Button* create_label(const QString& content) {
|
||||
auto ret = new Button;
|
||||
ret->content.text = new Text(content);
|
||||
ret->content.layout.second_prefix = 4;
|
||||
ret->content.layout.second_suffix = 0;
|
||||
ret->content.layout.main_type = Layout::Prefix_Space;
|
||||
// ret->background.set_border(Qt::yellow);
|
||||
return ret;
|
||||
}
|
||||
static QLayout* create_input(const QString& content, const QString& unit) {
|
||||
auto ret = new QVBoxLayout;
|
||||
ret->setSpacing(0);
|
||||
ret->setMargin(0);
|
||||
auto label = create_label(content);
|
||||
ret->addWidget(label);
|
||||
auto core = new Input;
|
||||
core->unit = unit;
|
||||
core->focus_color = base;
|
||||
ret->addWidget(core);
|
||||
return ret;
|
||||
}
|
||||
static QLayout* create_check_box(const QString& content, const QVector<QString>& opt_list) {
|
||||
auto ret = new QVBoxLayout;
|
||||
ret->setSpacing(0);
|
||||
ret->setMargin(0);
|
||||
auto label = create_label(content);
|
||||
ret->addWidget(label);
|
||||
auto core = new ComboBox;
|
||||
for (auto& opt : opt_list)
|
||||
{
|
||||
core->addItem(opt);
|
||||
}
|
||||
ret->addWidget(core);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user