56 lines
2.2 KiB
C++
56 lines
2.2 KiB
C++
#pragma once
|
|
#include "../Renderive/base/Tool.h"
|
|
static QWidget* create_sweep_frequent_plot() {
|
|
class Sweep_Frequent_Plot : public renderive::Plot {
|
|
public:
|
|
std::shared_ptr<renderive::Axis> x_axis{};
|
|
std::shared_ptr<renderive::Axis> y_axis{};
|
|
std::shared_ptr<renderive::Multi_Select_Rect> msr{};
|
|
std::shared_ptr<renderive::Sweep_Frequency> sf{};
|
|
QMenu* menu{};
|
|
void init() override {
|
|
Plot::init();
|
|
object_name = "Axis_Test_Plot";
|
|
auto data = create_renderable_node(get_root_renderable(), "Data_Renderable");
|
|
auto axis = create_renderable_node(get_root_renderable(), "Axis_Renderable");
|
|
auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable");
|
|
x_axis = renderive::Axis::Builder(axis, Qt::Horizontal)
|
|
.set_coord_range({0, 100})
|
|
.set_tick_length(-10)
|
|
.build();
|
|
y_axis = renderive::Axis::Builder(axis, Qt::Vertical)
|
|
.set_coord_range({100, 0})
|
|
.build();
|
|
sf = renderive::Sweep_Frequency::Builder(data, x_axis, y_axis)
|
|
.set_block_num(200)
|
|
.set_block_frequency_point_size(20)
|
|
.set_frequency_range({0, 100})
|
|
.build();
|
|
msr = renderive::Multi_Select_Rect::Builder(overlay, x_axis, y_axis).build();
|
|
}
|
|
protected:
|
|
void resizeEvent(QResizeEvent* event) override {
|
|
x_axis->set_x(0);
|
|
x_axis->set_y(height() - 1);
|
|
x_axis->set_pixel_size(width());
|
|
y_axis->set_x(0);
|
|
y_axis->set_y(0);
|
|
y_axis->set_pixel_size(height());
|
|
}
|
|
void contextMenuEvent(QContextMenuEvent* event) override {
|
|
if (!menu) {
|
|
auto ws =
|
|
bw(cw(sf.get(), -1), "扫频图") +
|
|
bw(cw(x_axis.get()), "x轴") +
|
|
bw(cw(y_axis.get()), "y轴") +
|
|
bw(cw(msr.get()), "多选框");
|
|
menu = create_menu(this, ws);
|
|
}
|
|
menu->exec(event->globalPos());
|
|
}
|
|
};
|
|
auto w = new Sweep_Frequent_Plot;
|
|
w->init();
|
|
return w;
|
|
}
|