#pragma once #include "../Widget/component/Table/export.h" #include "../Renderive/base/Tool.h" namespace Psc { // // static std::vector cw(Table_View* view) { // std::vector ret; // ret.append({ // renderive::create_edit_widget("隐藏行", [view, m](const int& value) { // m->row_info_list[value]->hide = true; // view->update(); // }, 1), // renderive::create_edit_widget("显示行", [view, m](const int& value) { // m->row_info_list[value]->hide = false; // view->update(); // }, 1), // renderive::create_edit_widget("隐藏列", [view, m](const int& value) { // m->col_info_list[value]->hide = true; // view->update(); // }, 1), // renderive::create_edit_widget("显示列", [view, m](const int& value) { // m->col_info_list[value]->hide = false; // view->update(); // }, 1), // // // renderive::create_edit_widget_list("合并单元格", [view, m](const std::vector& 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("拆分单元格", [view, m](const std::vector& 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("添加行", [view, m](const std::vector& values) { // int pos = values[0]; // int num = values[1]; // int col_num = m->col_info_list.size(); // std::vector row_infos; // for (int i = 0; i < num; i++) // { // auto info = std::make_shared(10, "asdasdasd"); // row_infos.append(info); // } // std::vector> data; // for (int i = 0; i < num; i++) // { // std::vector row; // for (int j = 0; j < col_num; j++) // { // auto cur = std::make_shared(); // 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("添加列", [view, m](const std::vector& values) { // int pos = values[0]; // int num = values[1]; // int row_num = m->row_info_list.size(); // std::vector col_infos; // for (int i = 0; i < num; i++) // { // auto info = std::make_shared(10, "asdasdasd"); // col_infos.append(info); // } // std::vector> data; // for (int i = 0; i < num; i++) // { // std::vector col; // for (int j = 0; j < row_num; j++) // { // auto cur = std::make_shared(); // 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("重新设置所有行列内容", [view, m](const std::vector& 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 cw(Table_View* view) { std::vector ret; auto m = dynamic_cast(view->model); ret = { renderive::create_edit_widget("隐藏行", [view, m](const int& value) { m->get_row_info(value)->hide = true; view->update(); }, 1), renderive::create_edit_widget("显示行", [view, m](const int& value) { m->get_row_info(value)->hide = false; view->update(); }, 1), renderive::create_edit_widget("隐藏列", [view, m](const int& value) { m->get_col_info(value)->hide = true; view->update(); }, 1), renderive::create_edit_widget("显示列", [view, m](const int& value) { m->get_col_info(value)->hide = false; view->update(); }, 1), renderive::create_edit_widget_list("合并单元格", [view, m](const std::vector& 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("拆分单元格", [view, m](const std::vector& 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("添加行", [view, m](const std::vector& values) { int pos = values[0]; int num = values[1]; int col_num = m->total_col(); std::vector row_infos; for (int i = 0; i < num; i++) { auto info = new Row_Info(10, "asdasdasd"); row_infos.push_back(info); } std::vector> data; for (int i = 0; i < num; i++) { std::vector 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("添加列", [view, m](const std::vector& values) { int pos = values[0]; int num = values[1]; int row_num = m->total_row(); std::vector col_infos; for (int i = 0; i < num; i++) { auto info = new Col_Info(10, "asdasdasd"); col_infos.push_back(info); } std::vector> data; for (int i = 0; i < num; i++) { std::vector 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("重新设置所有行列内容", [view, m](const std::vector& 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_infos; for (int i = 0; i < col_num; ++i) { col_infos.push_back(new Col_Info(80, QString::number(i))); } std::vector> 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 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 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