#pragma once #include "../Renderive/base/Tool.h" static QWidget* create_sweep_frequent_plot() { class Sweep_Frequent_Plot : public renderive::Plot { public: std::shared_ptr x_axis{}; std::shared_ptr y_axis{}; std::shared_ptr msr{}; std::shared_ptr 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; }