自定义内存分配池

This commit is contained in:
2026-07-29 18:08:57 +08:00
parent 5a3511bb58
commit d943d82554
122 changed files with 3602 additions and 1215 deletions
+5 -5
View File
@@ -35,11 +35,11 @@ static QWidget* create_afterglow() {
}
void contextMenuEvent(QContextMenuEvent* event) override {
if (!menu) {
auto ws =
bw(cw(ag.get(), -1), "余辉图") +
bw(cw(x_axis.get()), "频率轴") +
bw(cw(y_axis.get()), "功率概率轴") +
bw(cw(msr.get()), "多选框");
auto ws = concat_widgets(
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());
+5 -5
View File
@@ -34,11 +34,11 @@ static QWidget* create_audio_plot() {
}
void contextMenuEvent(QContextMenuEvent* event) override {
if (!menu) {
auto ws =
bw(cw(audio.get(), -1), "音频图") +
bw(cw(y_axis.get()), "功率y轴") +
bw(cw(x_axis.get()), "时间轴") +
bw(cw(msr.get()), "多选框");
auto ws = concat_widgets(
bw(cw(audio.get(), -1), "音频图"),
bw(cw(y_axis.get()), "功率y轴"),
bw(cw(x_axis.get()), "时间轴"),
bw(cw(msr.get()), "多选框"));
menu = create_menu(this, ws);
}
menu->exec(event->globalPos());
+15 -8
View File
@@ -12,10 +12,10 @@ QStandardItem* Demo_Gallery::get_from_data(const T_Data& data) {
data_map[data.name] = w;
return new QStandardItem(data.name);
}
QList<QStandardItem*> Demo_Gallery::get_list(const QVector<T_Data>& datas) {
QList<QStandardItem*> ret;
std::vector<QStandardItem*> Demo_Gallery::get_list(const std::vector<T_Data>& datas) {
std::vector<QStandardItem*> ret;
for (const T_Data& data : datas) {
ret.append(get_from_data(data));
ret.push_back(get_from_data(data));
}
return ret;
}
@@ -71,8 +71,12 @@ Demo_Gallery::Demo_Gallery() :
// tree_view->setItemDelegate(new Delegate);
tree_view->setHeaderHidden(true);
QStandardItem* root = standard_model->invisibleRootItem();
auto append_rows = [](QStandardItem* parent, const std::vector<QStandardItem*>& rows) {
for (QStandardItem* row : rows)
parent->appendRow(row);
};
auto plottable = new QStandardItem("plottable");
plottable->appendRows(get_list({
append_rows(plottable, get_list({
{"余晖图", create_afterglow()},
{"音频图", create_audio_plot()},
{"星座图", create_planisphere_plot()},
@@ -81,7 +85,7 @@ Demo_Gallery::Demo_Gallery() :
{"扫频图", create_sweep_frequent_plot()},
}));
auto base = new QStandardItem("基础元素");
base->appendRows(get_list({
append_rows(base, get_list({
{"轴测试", create_axis_test_plot()},
{"时间轴测试", create_time_axis_test_plot()},
{"频率轴测试", create_frequent_axis_test_plot()},
@@ -91,7 +95,7 @@ Demo_Gallery::Demo_Gallery() :
auto t2 = new Test_File_Gather_Widget;
auto t3 = new Test_File_Play_Widget;
auto custom_widget = new QStandardItem("自定义控件");
custom_widget->appendRows(get_list({
append_rows(custom_widget, get_list({
{"Enum_Select", t1},
{"Test_File_Gather_Widget", t2},
{"Test_File_Play_Widget", t3},
@@ -99,7 +103,7 @@ Demo_Gallery::Demo_Gallery() :
{"", create_Tree_View()},
}));
auto Qt_raw_widget = new QStandardItem("Qt原生元素");
Qt_raw_widget->appendRows(get_list({
append_rows(Qt_raw_widget, get_list({
// QSizeGrip 一个改变大小的注脚
// QDesktopWidget 不知道干嘛的
// QFocusFrame 不知道干嘛的
@@ -138,7 +142,10 @@ Demo_Gallery::Demo_Gallery() :
// change_to("表格");
change_to("Test_File_Gather_Widget");
// change_to("树");
root->appendRows({plottable, base, custom_widget, Qt_raw_widget});
root->appendRow(plottable);
root->appendRow(base);
root->appendRow(custom_widget);
root->appendRow(Qt_raw_widget);
tree_view->setModel(standard_model);
tree_view->expandAll();
QObject::connect(tab_widget, &QTabWidget::tabCloseRequested, [this](int index) {
+2 -2
View File
@@ -34,8 +34,8 @@ public:
QString name;
QWidget* plot;
};
QMap<QString, QWidget*> data_map;
std::map<QString, QWidget*> data_map;
QStandardItem* get_from_data(const T_Data& data);
QList<QStandardItem*> get_list(const QVector<T_Data>& datas);
std::vector<QStandardItem*> get_list(const std::vector<T_Data>& datas);
void change_to(const QString& name);
};
+38 -38
View File
@@ -3,8 +3,8 @@
#include "../Renderive/base/Tool.h"
namespace Psc {
//
// static QVector<QWidget*> cw(Table_View* view) {
// QVector<QWidget*> ret;
// static std::vector<QWidget*> cw(Table_View* view) {
// std::vector<QWidget*> ret;
// ret.append({
// renderive::create_edit_widget<int>("隐藏行", [view, m](const int& value) {
// m->row_info_list[value]->hide = true;
@@ -24,7 +24,7 @@ namespace Psc {
// }, 1),
//
//
// renderive::create_edit_widget_list<int>("合并单元格", [view, m](const QVector<int>& values) {
// renderive::create_edit_widget_list<int>("合并单元格", [view, m](const std::vector<int>& values) {
// int row = values[0];
// int col = values[1];
// int row_span = values[2];
@@ -32,7 +32,7 @@ namespace Psc {
// m->merge(row, col, row_span, col_span);
// view->update();
// }, {4, 4, 4, 4}),
// renderive::create_edit_widget_list<int>("拆分单元格", [view, m](const QVector<int>& values) {
// renderive::create_edit_widget_list<int>("拆分单元格", [view, m](const std::vector<int>& values) {
// int row = values[0];
// int col = values[1];
// int row_span = values[2];
@@ -41,20 +41,20 @@ namespace Psc {
// view->update();
// }, {4, 4, 2, 4}),
//
// renderive::create_edit_widget_list<int>("添加行", [view, m](const QVector<int>& values) {
// renderive::create_edit_widget_list<int>("添加行", [view, m](const std::vector<int>& values) {
// int pos = values[0];
// int num = values[1];
// int col_num = m->col_info_list.size();
// QVector<Base_Table_Model::Row> row_infos;
// std::vector<Base_Table_Model::Row> row_infos;
// for (int i = 0; i < num; i++)
// {
// auto info = std::make_shared<Row_Info>(10, "asdasdasd");
// row_infos.append(info);
// }
// QVector<QVector<Base_Table_Model::Cell>> data;
// std::vector<std::vector<Base_Table_Model::Cell>> data;
// for (int i = 0; i < num; i++)
// {
// QVector<Base_Table_Model::Cell> row;
// std::vector<Base_Table_Model::Cell> row;
// for (int j = 0; j < col_num; j++)
// {
// auto cur = std::make_shared<Table_Data>();
@@ -68,20 +68,20 @@ namespace Psc {
// view->update();
// }, {4, 1}),
//
// renderive::create_edit_widget_list<int>("添加列", [view, m](const QVector<int>& values) {
// renderive::create_edit_widget_list<int>("添加列", [view, m](const std::vector<int>& values) {
// int pos = values[0];
// int num = values[1];
// int row_num = m->row_info_list.size();
// QVector<Base_Table_Model::Col> col_infos;
// std::vector<Base_Table_Model::Col> col_infos;
// for (int i = 0; i < num; i++)
// {
// auto info = std::make_shared<Col_Info>(10, "asdasdasd");
// col_infos.append(info);
// }
// QVector<QVector<Base_Table_Model::Cell>> data;
// std::vector<std::vector<Base_Table_Model::Cell>> data;
// for (int i = 0; i < num; i++)
// {
// QVector<Base_Table_Model::Cell> col;
// std::vector<Base_Table_Model::Cell> col;
// for (int j = 0; j < row_num; j++)
// {
// auto cur = std::make_shared<Table_Data>();
@@ -95,7 +95,7 @@ namespace Psc {
// view->update();
// }, {5, 1}),
//
// renderive::create_edit_widget_list<int>("重新设置所有行列内容", [view, m](const QVector<int>& values) {
// renderive::create_edit_widget_list<int>("重新设置所有行列内容", [view, m](const std::vector<int>& values) {
// for (int i = 0; i < m->total_col(); i++)
// {
// m->col_info_list[i]->content = QString("%1").arg(i);
@@ -119,10 +119,10 @@ namespace Psc {
//
// return ret;
// }
static QVector<QWidget*> cw(Table_View* view) {
QVector<QWidget*> ret;
static std::vector<QWidget*> cw(Table_View* view) {
std::vector<QWidget*> ret;
auto m = dynamic_cast<Memory_Table_Model*>(view->model);
ret.append({
ret = {
renderive::create_edit_widget<int>("隐藏行", [view, m](const int& value) {
m->get_row_info(value)->hide = true;
view->update(); }, 1),
@@ -135,63 +135,63 @@ static QVector<QWidget*> cw(Table_View* view) {
renderive::create_edit_widget<int>("显示列", [view, m](const int& value) {
m->get_col_info(value)->hide = false;
view->update(); }, 1),
renderive::create_edit_widget_list<int>("合并单元格", [view, m](const QVector<int>& values) {
renderive::create_edit_widget_list<int>("合并单元格", [view, m](const std::vector<int>& values) {
int row = values[0];
int col = values[1];
int row_span = values[2];
int col_span = values[3];
m->merge(row, col, row_span, col_span);
view->update(); }, {4, 4, 4, 4}),
renderive::create_edit_widget_list<int>("拆分单元格", [view, m](const QVector<int>& values) {
renderive::create_edit_widget_list<int>("拆分单元格", [view, m](const std::vector<int>& values) {
int row = values[0];
int col = values[1];
int row_span = values[2];
int col_span = values[3];
m->split(row, col, row_span, col_span);
view->update(); }, {4, 4, 2, 4}),
renderive::create_edit_widget_list<int>("添加行", [view, m](const QVector<int>& values) {
renderive::create_edit_widget_list<int>("添加行", [view, m](const std::vector<int>& values) {
int pos = values[0];
int num = values[1];
int col_num = m->total_col();
QVector<Row_Info*> row_infos;
std::vector<Row_Info*> row_infos;
for (int i = 0; i < num; i++) {
auto info = new Row_Info(10, "asdasdasd");
row_infos.append(info);
row_infos.push_back(info);
}
QVector<QVector<Base_Table_Data*>> data;
std::vector<std::vector<Base_Table_Data*>> data;
for (int i = 0; i < num; i++) {
QVector<Base_Table_Data*> row;
std::vector<Base_Table_Data*> row;
for (int j = 0; j < col_num; j++) {
auto cur = new Table_Paint_Data("");
cur->content = "2222";
row.append(cur);
row.push_back(cur);
}
data.append(row);
data.push_back(row);
}
m->insert_row(pos, row_infos, data, Edge_Expand_Type::None);
view->update(); }, {4, 1}),
renderive::create_edit_widget_list<int>("添加列", [view, m](const QVector<int>& values) {
renderive::create_edit_widget_list<int>("添加列", [view, m](const std::vector<int>& values) {
int pos = values[0];
int num = values[1];
int row_num = m->total_row();
QVector<Col_Info*> col_infos;
std::vector<Col_Info*> col_infos;
for (int i = 0; i < num; i++) {
auto info = new Col_Info(10, "asdasdasd");
col_infos.append(info);
col_infos.push_back(info);
}
QVector<QVector<Base_Table_Data*>> data;
std::vector<std::vector<Base_Table_Data*>> data;
for (int i = 0; i < num; i++) {
QVector<Base_Table_Data*> col;
std::vector<Base_Table_Data*> col;
for (int j = 0; j < row_num; j++) {
auto cur = new Table_Paint_Data("");
cur->content = "2222";
col.append(cur);
col.push_back(cur);
}
data.append(col);
data.push_back(col);
}
m->insert_col(pos, col_infos, data, Edge_Expand_Type::None);
view->update(); }, {5, 1}),
renderive::create_edit_widget_list<int>("重新设置所有行列内容", [view, m](const QVector<int>& values) {
renderive::create_edit_widget_list<int>("重新设置所有行列内容", [view, m](const std::vector<int>& values) {
for (int i = 0; i < m->total_col(); i++) {
m->get_col_info(i)->content = QString("%1").arg(i);
}
@@ -205,7 +205,7 @@ static QVector<QWidget*> cw(Table_View* view) {
}
}
view->update(); }, {}),
});
};
return ret;
}
inline Table_View* create_table_view2() {
@@ -226,16 +226,16 @@ inline Table_View* create_table_view2() {
// int col_num = 15;
auto m = new Memory_Table_Model();
ret->model = m;
QVector<Col_Info*> col_infos;
std::vector<Col_Info*> col_infos;
for (int i = 0; i < col_num; ++i) {
col_infos.push_back(new Col_Info(80, QString::number(i)));
}
QVector<QVector<Base_Table_Data*>> data;
std::vector<std::vector<Base_Table_Data*>> data;
data.resize(col_infos.size());
m->insert_col(0, col_infos, data, Edge_Expand_Type::None);
for (int i = 0; i < row_num; ++i) {
auto row_info = new Row_Info(50, QString::number(i));
QVector<Base_Table_Data*> row;
std::vector<Base_Table_Data*> row;
for (int j = 0; j < col_num; ++j) {
auto d = new Table_Paint_Data("");
d->parent = d;
@@ -271,7 +271,7 @@ inline Table_View* create_table_view() {
m->row_info_list.push_back(new Row_Info(50, QString::number(i)));
}
for (int i = 0; i < col_num; ++i) {
QVector<Base_Table_Data*> row;
std::vector<Base_Table_Data*> row;
for (int j = 0; j < row_num; ++j) {
auto d = new Table_Paint_Data("");
d->parent = d;
+4 -4
View File
@@ -37,10 +37,10 @@ static QWidget* create_planisphere_plot() {
}
void contextMenuEvent(QContextMenuEvent* event) override {
if (!menu) {
auto ws =
bw(cw(planisphere.get(), -1), "星座图") +
bw(cw(x_axis.get()), "I轴") +
bw(cw(y_axis.get()), "Q轴");
auto ws = concat_widgets(
bw(cw(planisphere.get(), -1), "星座图"),
bw(cw(x_axis.get()), "I轴"),
bw(cw(y_axis.get()), "Q轴"));
menu = create_menu(this, ws);
}
menu->exec(event->globalPos());
+5 -5
View File
@@ -46,11 +46,11 @@ static QWidget* create_spectrun_plot() {
}
void contextMenuEvent(QContextMenuEvent* event) override {
if (!menu) {
auto ws =
bw(cw(sp.get(), -1), "频谱图") +
bw(cw(x_axis.get()), "频率x轴") +
bw(cw(y_axis.get()), "功率y轴") +
bw(cw(msr.get()), "多选框");
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()), "多选框"));
menu = create_menu(this, ws);
}
menu->exec(event->globalPos());
+5 -5
View File
@@ -39,11 +39,11 @@ static QWidget* create_sweep_frequent_plot() {
}
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()), "多选框");
auto ws = concat_widgets(
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());
+5 -5
View File
@@ -40,11 +40,11 @@ static QWidget* create_water_fall_plot() {
}
void contextMenuEvent(QContextMenuEvent* event) override {
if (!menu) {
auto ws =
bw(cw(wf.get(), -1), "瀑布图") +
bw(cw(x_axis.get()), "频率轴") +
bw(cw(y_axis.get()), "时间轴") +
bw(cw(msr.get()), "多选框");
auto ws = concat_widgets(
bw(cw(wf.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());