Files
Renderive/Demo_Gallery/Normal_test.h
T
2026-07-29 18:08:57 +08:00

297 lines
12 KiB
C++

#pragma once
#include "../Widget/component/Table/export.h"
#include "../Renderive/base/Tool.h"
namespace Psc {
//
// 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;
// view->update();
// }, 1),
// renderive::create_edit_widget<int>("显示行", [view, m](const int& value) {
// m->row_info_list[value]->hide = false;
// view->update();
// }, 1),
// renderive::create_edit_widget<int>("隐藏列", [view, m](const int& value) {
// m->col_info_list[value]->hide = true;
// view->update();
// }, 1),
// renderive::create_edit_widget<int>("显示列", [view, m](const int& value) {
// m->col_info_list[value]->hide = false;
// view->update();
// }, 1),
//
//
// 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 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 std::vector<int>& values) {
// int pos = values[0];
// int num = values[1];
// int col_num = m->col_info_list.size();
// 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);
// }
// std::vector<std::vector<Base_Table_Model::Cell>> data;
// for (int i = 0; i < num; i++)
// {
// std::vector<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}),
//
// 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();
// 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);
// }
// std::vector<std::vector<Base_Table_Model::Cell>> data;
// for (int i = 0; i < num; i++)
// {
// std::vector<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}),
//
// 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);
// }
// 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 std::vector<QWidget*> cw(Table_View* view) {
std::vector<QWidget*> ret;
auto m = dynamic_cast<Memory_Table_Model*>(view->model);
ret = {
renderive::create_edit_widget<int>("隐藏行", [view, m](const int& value) {
m->get_row_info(value)->hide = true;
view->update(); }, 1),
renderive::create_edit_widget<int>("显示行", [view, m](const int& value) {
m->get_row_info(value)->hide = false;
view->update(); }, 1),
renderive::create_edit_widget<int>("隐藏列", [view, m](const int& value) {
m->get_col_info(value)->hide = true;
view->update(); }, 1),
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 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 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 std::vector<int>& values) {
int pos = values[0];
int num = values[1];
int col_num = m->total_col();
std::vector<Row_Info*> row_infos;
for (int i = 0; i < num; i++) {
auto info = new Row_Info(10, "asdasdasd");
row_infos.push_back(info);
}
std::vector<std::vector<Base_Table_Data*>> data;
for (int i = 0; i < num; i++) {
std::vector<Base_Table_Data*> row;
for (int j = 0; j < col_num; j++) {
auto cur = new Table_Paint_Data("");
cur->content = "2222";
row.push_back(cur);
}
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 std::vector<int>& values) {
int pos = values[0];
int num = values[1];
int row_num = m->total_row();
std::vector<Col_Info*> col_infos;
for (int i = 0; i < num; i++) {
auto info = new Col_Info(10, "asdasdasd");
col_infos.push_back(info);
}
std::vector<std::vector<Base_Table_Data*>> data;
for (int i = 0; i < num; i++) {
std::vector<Base_Table_Data*> col;
for (int j = 0; j < row_num; j++) {
auto cur = new Table_Paint_Data("");
cur->content = "2222";
col.push_back(cur);
}
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 std::vector<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* menu{};
void contextMenuEvent(QContextMenuEvent* event) override {
if (!menu) {
// menu = create_menu_normal(this, cw(this));
menu = create_menu_normal(this, cw(this));
}
menu->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;
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)));
}
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));
std::vector<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* menu{};
void contextMenuEvent(QContextMenuEvent* event) override {
if (!menu) {
// menu = create_menu_normal(this, cw(this));
menu = create_menu_normal(this, cw(this));
}
menu->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) {
std::vector<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;
}
} // namespace Psc