自定义内存分配池
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user