名称优化

This commit is contained in:
2026-08-02 03:43:40 +08:00
parent cd45ffe6de
commit 0fc969c85d
7 changed files with 923 additions and 162 deletions
@@ -11,7 +11,7 @@
#include "../BaseWidget.h"
#include "../menu/BaseWidgetMenu.h"
#include "../BackEnd/MainWidget.h"
#include "Demo_Gallery/base/export.h"
#include "../Tool.h"
static renderive::Range frequent_range = {-12000, 12000};
static double max = 160;
QWidget* Intermediate_Frequency_Widget::create_spectrogram_power_plot() {
@@ -19,51 +19,51 @@ QWidget* Intermediate_Frequency_Widget::create_spectrogram_power_plot() {
public:
std::shared_ptr<renderive::Frequency_Axis> x_axis{};
std::shared_ptr<renderive::Axis> y_axis{};
std::shared_ptr<renderive::Multi_Select_Rect> msr{};
std::shared_ptr<renderive::Selection_Rectangle_Overlay> msr{};
std::shared_ptr<renderive::Spectrum> sp{};
QMenu* menu{};
void init() override {
Latency_Eager_Plot::init();
object_name = "Spectrum_Plot";
auto data = create_renderable_node(get_root_renderable(), "Data_Renderable");
auto frequency_axis_cache = create_renderable_node(get_root_renderable(), "Frequency_Axis_Cache");
auto power_axis_cache = create_renderable_node(get_root_renderable(), "Power_Axis_Cache");
auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable");
auto data = create_renderable_node(root_renderable(), "Data_Renderable");
auto frequency_axis_cache = create_renderable_node(root_renderable(), "Frequency_Axis_Cache");
auto power_axis_cache = create_renderable_node(root_renderable(), "Power_Axis_Cache");
auto overlay = create_renderable_node(root_renderable(), "Overlay_Renderable");
frequency_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
power_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
x_axis = renderive::Frequency_Axis::Builder(frequency_axis_cache, renderive::Orientation::Horizontal)
.set_tick_length(-10)
.set_coord_range(frequent_range)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.build();
.set_tick_length(-10)
.set_coord_range(frequent_range)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.build();
y_axis = renderive::Axis::Builder(power_axis_cache, renderive::Orientation::Vertical)
.set_coord_range({160, 0})
.set_unit_text("功率")
.build();
.set_coord_range({160, 0})
.set_unit_text("功率")
.build();
sp = renderive::Spectrum::Builder(data, x_axis, y_axis)
.set_frequency_range(frequent_range)
.set_use_sweep_frequency_rect(true)
.set_sweep_region_visible(true)
.set_frequency_point_size(1024)
.build();
msr = renderive::Multi_Select_Rect::Builder(overlay, x_axis, y_axis).build();
msr = renderive::Selection_Rectangle_Overlay::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());
x_axis->set_pixel_length(width());
y_axis->set_x(0);
y_axis->set_y(0);
y_axis->set_pixel_size(height());
y_axis->set_pixel_length(height());
}
void contextMenuEvent(QContextMenuEvent* event) override {
if (!menu) {
auto ws = concat_widgets(
bw(cw(sp.get(), -1), "频谱图"),
bw(cw(x_axis.get()), "频率x轴"),
bw(cw(y_axis.get()), "功率y轴"),
bw(cw(msr.get()), "多选框"));
bw(cw(sp.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());
@@ -73,9 +73,9 @@ QWidget* Intermediate_Frequency_Widget::create_spectrogram_power_plot() {
w->init();
spectrogram_line = w->sp;
progress_bar1->set_value = [this]() {
double middle_frequent = this->spectrogram_line->frequency_range().middle();
double middle_frequent = this->spectrogram_line->frequency_range().center();
bool ok = false;
double power = spectrogram_line->get_power(middle_frequent, ok);
double power = spectrogram_line->power_at(middle_frequent, ok);
if (ok)
this->progress_bar1->value = power;
};
@@ -87,51 +87,51 @@ QWidget* Intermediate_Frequency_Widget::create_Afterglow_Plot() {
std::shared_ptr<renderive::Frequency_Axis> x_axis{};
std::shared_ptr<renderive::Axis> y_axis{};
std::shared_ptr<renderive::Afterglow> ag{};
std::shared_ptr<renderive::Multi_Select_Rect> msr{};
std::shared_ptr<renderive::Selection_Rectangle_Overlay> msr{};
QMenu* menu{};
void init() override {
Latency_Eager_Plot::init();
object_name = "Afterglow_Plot";
auto data = create_renderable_node(get_root_renderable(), "Data_Renderable");
auto frequency_axis_cache = create_renderable_node(get_root_renderable(), "Frequency_Axis_Cache");
auto power_axis_cache = create_renderable_node(get_root_renderable(), "Power_Axis_Cache");
auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable");
auto data = create_renderable_node(root_renderable(), "Data_Renderable");
auto frequency_axis_cache = create_renderable_node(root_renderable(), "Frequency_Axis_Cache");
auto power_axis_cache = create_renderable_node(root_renderable(), "Power_Axis_Cache");
auto overlay = create_renderable_node(root_renderable(), "Overlay_Renderable");
frequency_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
power_axis_cache->set_cache_mode(renderive::Renderable_Cache_Mode::Local_Pixel);
x_axis = renderive::Frequency_Axis::Builder(frequency_axis_cache, renderive::Orientation::Horizontal)
.set_coord_range(frequent_range)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.set_use_drag(true)
.build();
.set_coord_range(frequent_range)
.set_tick_length(-10)
.set_sub_tick_length(-5)
.set_use_drag(true)
.build();
y_axis = renderive::Axis::Builder(power_axis_cache, renderive::Orientation::Vertical)
.set_coord_range({160, 0})
.set_use_drag(true)
.build();
.set_coord_range({160, 0})
.set_use_drag(true)
.build();
ag = renderive::Afterglow::Builder(data, x_axis, y_axis)
.set_frequency_range(frequent_range)
.set_power_range({0, 160})
.set_frequency_point_size(1024)
.set_frequency_bin_count(1024)
.build();
msr = renderive::Multi_Select_Rect::Builder(overlay, x_axis, y_axis).build();
msr = renderive::Selection_Rectangle_Overlay::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());
x_axis->set_pixel_length(width());
y_axis->set_x(0);
y_axis->set_y(0);
y_axis->set_pixel_size(height());
ag->set_power_point_size(ag->power_axis()->get_pixel_point_size());
y_axis->set_pixel_length(height());
ag->set_power_point_size(ag->power_axis()->pixel_sample_count());
}
void contextMenuEvent(QContextMenuEvent* event) override {
if (!menu) {
auto ws = concat_widgets(
bw(cw(ag.get(), -1), "余辉图"),
bw(cw(x_axis.get()), "频率轴"),
bw(cw(y_axis.get()), "功率概率轴"),
bw(cw(msr.get()), "多选框"));
bw(cw(ag.get(), -1), "余辉图"),
bw(cw(x_axis.get()), "频率轴"),
bw(cw(y_axis.get()), "功率概率轴"),
bw(cw(msr.get()), "多选框"));
menu = create_menu(this, ws);
}
menu->exec(event->globalPos());
@@ -155,22 +155,22 @@ Intermediate_Frequency_Widget::Intermediate_Frequency_Widget(QWidget* parent) :
frequent_shower = new Frequent_Shower(this);
QColor orange(255, 165, 0);
progress_bar1 = new Progress_Bar({
Tick("S", Qt::black),
{"3", Qt::black},
{"6", Qt::black},
{"9", Qt::black},
{"20", Qt::black},
{"+40", orange},
{"+60", orange},
{"+80", orange},
{"+100", Qt::red},
}, this);
Tick("S", Qt::black),
{"3", Qt::black},
{"6", Qt::black},
{"9", Qt::black},
{"20", Qt::black},
{"+40", orange},
{"+60", orange},
{"+80", orange},
{"+100", Qt::red},
}, this);
progress_bar2 = new Progress_Bar({
{"1", Qt::black},
{"2", Qt::yellow},
{"3", Qt::red},
{">5", Qt::red},
}, this);
{"1", Qt::black},
{"2", Qt::yellow},
{"3", Qt::red},
{">5", Qt::red},
}, this);
auto main = create_vbox_layout({}, this);
main->addStretch(1);
{
@@ -221,7 +221,7 @@ void Intermediate_Frequency_Widget::focusInEvent(QFocusEvent* event) {
void Intermediate_Frequency_Widget::init_menu() {
int font_size = 30;
auto btn1 = new Double_Text_Menu_Button("设置最大值标记", "取消最大值标记", font_size, [&](bool is_first) {
spectrogram_line->set_use_max_marker(is_first);
spectrogram_line->set_max_marker_visible(is_first);
base_widget_menu->hide();
Main_Widget::instance()->get_current_base_widget()->setFocus();
});
@@ -239,15 +239,15 @@ void Intermediate_Frequency_Widget::init_menu() {
that->setValue(new_frequent);
spectrogram_line->set_current_marker_frequency(new_frequent);
}, qMax(0.0, spectrogram_line->frequency_range().length() / 50.0));
auto btn_middle_frequent = new Value_Menu_Button("中频:%1 Hz", font_size, nullptr, spectrogram_line->middle_sweep_frequency());
auto btn_middle_frequent = new Value_Menu_Button("中频:%1 Hz", font_size, nullptr, spectrogram_line->center_frequency());
auto btn_frequent_width = new Value_Menu_Button("频宽:%1 Hz", font_size, [this, frequent_step2](Value_Menu_Button* that, bool add) {
that->setValue(that->value + (double)(add ? frequent_step2->value : -frequent_step2->value));
double middle_sweep_frequent = spectrogram_line->middle_sweep_frequency();
double middle_sweep_frequent = spectrogram_line->center_frequency();
spectrogram_line->set_sweep_frequency_range({middle_sweep_frequent - that->value, middle_sweep_frequent + that->value});
}, qAbs(spectrogram_line->sweep_frequency_range().length() / 2));
btn_middle_frequent->value_changed = [this, btn_frequent_width, frequent_step2](Value_Menu_Button* that, bool add) {
that->setValue(that->value + (double)(add ? frequent_step2->value : -frequent_step2->value));
spectrogram_line->set_middle_sweep_frequency(that->value);
spectrogram_line->set_center_frequency(that->value);
spectrogram_line->set_sweep_frequency_range({that->value - btn_frequent_width->value, that->value + btn_frequent_width->value});
};
auto btn2_2 = new Value_Menu_Button("参考增益:%1", font_size, [&](Value_Menu_Button* that, bool add) {
@@ -271,30 +271,30 @@ void Intermediate_Frequency_Widget::init_menu() {
that->setValue(new_frequent);
}, spectrogram_line->frequency_range().origin);
auto btn1_1 = new Value_Menu_Button("当前标记:%1", font_size, [&, mark_frequent](Value_Menu_Button* that, bool add) {
int index = ((int)that->value + (add ? 1 : -1)) % spectrogram_line->select_line_marker_size();
int index = ((int)that->value + (add ? 1 : -1)) % spectrogram_line->selectable_line_marker_count();
that->setValue(index);
spectrogram_line->set_selected_line_marker(index);
mark_frequent->setValue(spectrogram_line->get_mark_frequency(index));
spectrogram_line->set_selected_marker_index(index);
mark_frequent->setValue(spectrogram_line->marker_frequency(index));
}, -1);
auto btn1_2 = new Menu_Button("添加标记", font_size, [&, add_init_frequent]() {
spectrogram_line->add_custom_line_marker(add_init_frequent->value);
});
auto btn1_3 = new Menu_Button("删除标记", font_size, [&]() {
spectrogram_line->remove_current_marker();
int size = spectrogram_line->select_line_marker_size();
spectrogram_line->remove_selected_marker();
int size = spectrogram_line->selectable_line_marker_count();
if (size == 0) {
spectrogram_line->set_selected_line_marker(-1);
spectrogram_line->set_selected_marker_index(-1);
}
else {
spectrogram_line->set_selected_line_marker(0);
spectrogram_line->set_selected_marker_index(0);
}
});
connect(sub1, &Base_Widget_Menu::show_that, [&, mark_frequent]() {
spectrogram_line->set_selected_line_marker(0);
mark_frequent->setValue(spectrogram_line->get_mark_frequency(0));
spectrogram_line->set_selected_marker_index(0);
mark_frequent->setValue(spectrogram_line->marker_frequency(0));
});
connect(sub1, &Base_Widget_Menu::hide_that, [&]() {
spectrogram_line->un_select_marker();
spectrogram_line->clear_marker_selection();
});
sub1->add_menu_button_on_layout1({btn1_1, btn1_2, btn1_3}, 2);
sub1->add_menu_button_on_layout2({frequent_step, mark_frequent, add_init_frequent}, 2);