Files
Renderive/YSGraphic_Core/DemoGallery/Norml_test.h
T
2026-06-16 13:33:27 +08:00

359 lines
12 KiB
C++

#pragma once
#include "../component/Table/Table_View.h"
#include "Tool.h"
#include "../component/Table/Base_Info.h"
#include "../component/Table/Base_Table_Data.h"
namespace Psc {
//
// static QVector<QWidget*> cw(Table_View* view) {
// QVector<QWidget*> ret;
// ret.append({
// YSG::createEditWidget<int>("隐藏行", [view, m](const int& value) {
// m->row_info_list[value]->hide = true;
// view->update();
// }, 1),
// YSG::createEditWidget<int>("显示行", [view, m](const int& value) {
// m->row_info_list[value]->hide = false;
// view->update();
// }, 1),
// YSG::createEditWidget<int>("隐藏列", [view, m](const int& value) {
// m->col_info_list[value]->hide = true;
// view->update();
// }, 1),
// YSG::createEditWidget<int>("显示列", [view, m](const int& value) {
// m->col_info_list[value]->hide = false;
// view->update();
// }, 1),
//
//
// YSG::createEditWidget_List<int>("合并单元格", [view, m](const QVector<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}),
// YSG::createEditWidget_List<int>("拆分单元格", [view, m](const QVector<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}),
//
// YSG::createEditWidget_List<int>("添加行", [view, m](const QVector<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;
// 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;
// for (int i = 0; i < num; i++)
// {
// QVector<Base_Table_Model::Cell> row;
// for (int j = 0; j < col_num; j++)
// {
// auto cur = std::make_shared<Table_Data>();
// cur->content = "2222";
// row.append(cur);
// }
// data.append(row);
// }
//
// m->insert_row(pos, row_infos, data);
// view->update();
// }, {4, 1}),
//
// YSG::createEditWidget_List<int>("添加列", [view, m](const QVector<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;
// 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;
// for (int i = 0; i < num; i++)
// {
// QVector<Base_Table_Model::Cell> col;
// for (int j = 0; j < row_num; j++)
// {
// auto cur = std::make_shared<Table_Data>();
// cur->content = "2222";
// col.append(cur);
// }
// data.append(col);
// }
//
// m->insert_col(pos, col_infos, data);
// view->update();
// }, {5, 1}),
//
// YSG::createEditWidget_List<int>("重新设置所有行列内容", [view, m](const QVector<int>& values) {
// for (int i = 0; i < m->total_col(); i++)
// {
// m->col_info_list[i]->content = QString("%1").arg(i);
// }
// for (int i = 0; i < m->total_row(); i++)
// {
// m->row_info_list[i]->content = QString("%1").arg(i);
// }
// for (int i = 0; i < m->total_row(); i++)
// {
//
// for (int j = 0; j < m->total_col(); j++)
// {
// auto d = m->data[i][j];
// d->content = QString("[%1,%2]").arg(i).arg(j);
// }
// }
// view->update();
// }, {}),
// });
//
// return ret;
// }
static QVector<QWidget*> cw(Table_View* view) {
QVector<QWidget*> ret;
auto m = dynamic_cast<Memory_Table_Model *>(view->model);
ret.append({
YSG::createEditWidget<int>("隐藏行", [view, m](const int& value) {
m->get_row_info(value)->hide = true;
view->update();
}, 1),
YSG::createEditWidget<int>("显示行", [view, m](const int& value) {
m->get_row_info(value)->hide = false;
view->update();
}, 1),
YSG::createEditWidget<int>("隐藏列", [view, m](const int& value) {
m->get_col_info(value)->hide = true;
view->update();
}, 1),
YSG::createEditWidget<int>("显示列", [view, m](const int& value) {
m->get_col_info(value)->hide = false;
view->update();
}, 1),
YSG::createEditWidget_List<int>("合并单元格", [view, m](const QVector<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}),
YSG::createEditWidget_List<int>("拆分单元格", [view, m](const QVector<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}),
YSG::createEditWidget_List<int>("添加行", [view, m](const QVector<int>& values) {
int pos = values[0];
int num = values[1];
int col_num = m->total_col();
QVector<Row_Info*> row_infos;
for (int i = 0; i < num; i++)
{
auto info = new Row_Info(10, "asdasdasd");
row_infos.append(info);
}
QVector<QVector<Base_Table_Data*>> data;
for (int i = 0; i < num; i++)
{
QVector<Base_Table_Data*> row;
for (int j = 0; j < col_num; j++)
{
auto cur = new Table_Paint_Data("");
cur->content = "2222";
row.append(cur);
}
data.append(row);
}
m->insert_row(pos, row_infos, data, Edge_Expand_Type::None);
view->update();
}, {4, 1}),
YSG::createEditWidget_List<int>("添加列", [view, m](const QVector<int>& values) {
int pos = values[0];
int num = values[1];
int row_num = m->total_row();
QVector<Col_Info*> col_infos;
for (int i = 0; i < num; i++)
{
auto info = new Col_Info(10, "asdasdasd");
col_infos.append(info);
}
QVector<QVector<Base_Table_Data*>> data;
for (int i = 0; i < num; i++)
{
QVector<Base_Table_Data*> col;
for (int j = 0; j < row_num; j++)
{
auto cur = new Table_Paint_Data("");
cur->content = "2222";
col.append(cur);
}
data.append(col);
}
m->insert_col(pos, col_infos, data, Edge_Expand_Type::None);
view->update();
}, {5, 1}),
YSG::createEditWidget_List<int>("重新设置所有行列内容", [view, m](const QVector<int>& values) {
for (int i = 0; i < m->total_col(); i++)
{
m->get_col_info(i)->content = QString("%1").arg(i);
}
for (int i = 0; i < m->total_row(); i++)
{
m->get_row_info(i)->content = QString("%1").arg(i);
}
for (int i = 0; i < m->total_row(); i++)
{
for (int j = 0; j < m->total_col(); j++)
{
auto d = (Table_Paint_Data*)m->get_table_data(i, j);
d->content = QString("[%1,%2]").arg(i).arg(j);
}
}
view->update();
}, {}),
});
return ret;
}
inline Table_View* create_Table_View2() {
struct Table_View2 : Table_View {
QMenu *mMenu{};
void contextMenuEvent(QContextMenuEvent* event) override {
if(!mMenu) {
//mMenu = createMenu_Normal(this, cw(this));
mMenu = createMenu_Normal(this, cw(this));
}
mMenu->exec(event->globalPos());
}
};
auto ret = new Table_View2;
int row_num = 10;
int col_num = 10;
// int row_num = 14;
// int col_num = 15;
auto m = new Memory_Table_Model();
ret->model = m;
QVector<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;
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;
for (int j = 0; j < col_num; ++j)
{
auto d = new Table_Paint_Data("");
d->parent = d;
d->content = QString("(%1,%2)").arg(i).arg(j);
row.push_back(d);
}
m->insert_row(m->total_row(), {row_info}, {row}, Edge_Expand_Type::Positive);
}
return ret;
}
inline Table_View* create_Table_View() {
struct Table_View2 : Table_View {
QMenu *mMenu{};
void contextMenuEvent(QContextMenuEvent* event) override {
if(!mMenu) {
//mMenu = createMenu_Normal(this, cw(this));
mMenu = createMenu_Normal(this, cw(this));
}
mMenu->exec(event->globalPos());
}
};
auto ret = new Table_View2;
int row_num = 10;
int col_num = 10;
// int row_num = 14;
// int col_num = 15;
auto m = new Memory_Table_Model;
ret->model = m;
for (int i = 0; i < col_num; ++i)
{
m->col_info_list.push_back(new Col_Info(80, QString::number(i)));
}
for (int i = 0; i < row_num; ++i)
{
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;
for (int j = 0; j < row_num; ++j)
{
auto d = new Table_Paint_Data("");
d->parent = d;
d->content = QString("(%1,%2)").arg(i).arg(j);
row.push_back(d);
}
m->data.push_back(row);
}
{
auto t = new Widget_Data();
t->widget = new QPushButton("222222");
m->data[2][2] = t;
}
//ret->model->merage(2, 2, 4, 4);
//
// ret->model->row_info_list[2]->hide = true;
// ret->model->col_info_list[2]->hide = true;
// ret->model->col_info_list[3]->hide = true;
// ret->model->col_info_list[4]->hide = true;
return ret;
}
}