#include #include "SelectNodeShow.h" #include "ui_SelectNodeShow.h" #include #include #include #include #include #include "MeshData/meshSingleton.h" #include "MeshData/meshKernal.h" #include "preWindow.h" #include "vtkMeshSelectTableModel.h" #include "Settings/busAPI.h" // 获取高亮颜色 #include "Settings/GraphOption.h" // 获取高亮颜色 namespace MainWidget { SelectNodeShow::SelectNodeShow(PreWindow* preWindow,QWidget* parent) : QDialog(parent) , ui(new Ui::SelectNodeShow) ,_preWindow(preWindow) { ui->setupUi(this); init(); } SelectNodeShow::~SelectNodeShow() { delete ui; } void SelectNodeShow::search() { on_btnSearch_clicked(); } void SelectNodeShow::revert() { on_btnCancel_clicked(); } void SelectNodeShow::submit() { on_btnSubmit_clicked(); } bool SelectNodeShow::editable() { return true; } void SelectNodeShow::init() { //m_editMode = false; // m_access = new AccessDB(nullptr, "Threshold"); // m_access->initDB(); this->setAttribute(Qt::WA_StyledBackground); initTableView(); } void SelectNodeShow::initTableView() { this->_model=new vtkMeshSelectTableModel(_preWindow,this); this->_model->clear(); this->ui->tableView->setModel(this->_model); selectionModel = this->ui->tableView->selectionModel(); connect(selectionModel,SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)),this,SLOT(currentChanged(const QModelIndex&, const QModelIndex&))); // m_sqlModel = new QSqlTableModel(this, m_access); // // m_sqlModel->setTable("XXX"); // // m_sqlModel->setEditStrategy(QSqlTableModel::OnManualSubmit); // // if (!m_sqlModel->select()) { // qDebug() << "查询失败"; // qDebug() << m_sqlModel->lastError(); // return; // } // // ui->tableView->setModel(m_sqlModel); // // ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection); // ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); // // ui->tableView->setShowGrid(false); // // ui->tableView->verticalHeader()->setVisible(false); // // ui->tableView->setEditTriggers(QTableView::NoEditTriggers); } bool SelectNodeShow::editMode() { return false; } void SelectNodeShow::on_btnEdit_clicked() { // // TODO // // 将其余按键状态置灰 // // 将表格的编辑模式打开 // m_editMode = true; // // ui->tableView->setEditTriggers(QAbstractItemView::DoubleClicked); // // ui->btnNew->setDisabled(true); // ui->btnNew->setDisabled(true); // ui->btnDelete->setDisabled(true); // ui->btnCancel->setEnabled(true); // ui->btnSubmit->setEnabled(true); } void SelectNodeShow::on_btnNew_clicked() { // 删除指定行数 QItemSelectionModel* selectionModel = this->ui->tableView->selectionModel(); QModelIndexList selectedIndexes = selectionModel->selectedIndexes(); if (selectedIndexes.count() == 0) { return; } QList rows; for (int i = 0; i < selectedIndexes.count(); i++) { rows.push_back(selectedIndexes[i].row()); this->_model->setRemoveFlag(selectedIndexes[i].row(),false); } ModuleBase::SelectModel _selectModel=this->_model->getSelectModel(); if( _selectModel== ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) { this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor()); } else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) { this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor()); } _preWindow->reRender(); this->ui->tableView->show(); } void SelectNodeShow::on_btnSubmit_clicked() { // 更新items QMultiHash selectItems = this->_model->getSelectItems(); this->_preWindow->setSelectItems(selectItems,this->_model->getSelectModel()); } void SelectNodeShow::on_btnCancel_clicked() { } void SelectNodeShow::on_btnDelete_clicked() { // 删除指定行数 QItemSelectionModel* selectionModel = this->ui->tableView->selectionModel(); QModelIndexList selectedIndexes = selectionModel->selectedIndexes(); if (selectedIndexes.count() == 0) { return; } QList rows; for (int i = 0; i < selectedIndexes.count(); i++) { rows.push_back(selectedIndexes[i].row()); this->_model->setRemoveFlag(selectedIndexes[i].row(),true); } ModuleBase::SelectModel _selectModel=this->_model->getSelectModel(); if( _selectModel== ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) { this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getMeshNodeColor()); } else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) { this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getMeshFaceColor()); } _preWindow->reRender(); this->ui->tableView->show(); } void SelectNodeShow::on_btnSearch_clicked() { // m_sqlModel->setSort(0, Qt::AscendingOrder); // // int result = m_sqlModel->select(); // if (!result) { // qDebug() << u8"查询失败: " << m_sqlModel->lastError().text(); // return; // } // // ui->btnNew->setEnabled(true); // ui->btnEdit->setEnabled(true); // ui->btnDelete->setEnabled(true); // ui->btnCancel->setDisabled(true); // ui->btnSubmit->setDisabled(true); // // ui->tableView->scrollToTop(); } void SelectNodeShow::initSelectNodeShow(QMultiHash* selectItems,ModuleBase::SelectModel _selectModel) { this->_model->SetData(selectItems,_selectModel); // if (this->_model->rowCount() > 1e4) { this->ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); }else{ this->ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); } this->ui->tableView->show(); } void SelectNodeShow::currentChanged(const QModelIndex& current, const QModelIndex& previous) { if (current.isValid()) { // 处理当前行的逻辑,比如更新界面或者执行其他操作 this->_model->setCurrentRowIndex(current); } } void SelectNodeShow::on_btnHightlightSelect_clicked() { ModuleBase::SelectModel _selectModel=this->_model->getSelectModel(); // 清除选中行 QList deleterows; QList highrows; deleterows.clear(); highrows.clear(); for(int i=0;i_model->getRemoveFlag(selectRows[i])) { deleterows.push_back(selectRows[i]); } else { highrows.push_back(selectRows[i]); } } if( _selectModel== ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) { this->_model->HightlightRows(deleterows,Setting::BusAPI::instance()->getGraphOption()->getMeshNodeColor()); this->_model->HightlightRows(highrows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor()); } else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) { this->_model->HightlightRows(deleterows,Setting::BusAPI::instance()->getGraphOption()->getMeshFaceColor()); this->_model->HightlightRows(highrows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor()); } // 删除指定行数 QItemSelectionModel* selectionModel = this->ui->tableView->selectionModel(); QModelIndexList selectedIndexes = selectionModel->selectedIndexes(); if (selectedIndexes.count() == 0) { return; } QList rows; for (int i = 0; i < selectedIndexes.count(); i++) { rows.push_back(selectedIndexes[i].row()); } // ModuleBase::SelectModel _selectModel=this->_model->getSelectModel(); if( _selectModel== ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) { this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getPreHighLightColor()); } else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) { this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getPreHighLightColor()); } _preWindow->reRender(); selectRows=rows; // this->ui->tableView->show(); } void SelectNodeShow::on_btnShowSelect_clicked() { QList deleterows; QList highrows; deleterows.clear(); highrows.clear(); // 针对所有行进行操作 for(int i=0;i_model->rowCount();i++) { if(this->_model->getRemoveFlag(i)) { deleterows.push_back(i); } else { highrows.push_back(i); } } ModuleBase::SelectModel _selectModel=this->_model->getSelectModel(); if( _selectModel== ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) { this->_model->HightlightRows(deleterows,Setting::BusAPI::instance()->getGraphOption()->getMeshNodeColor()); this->_model->HightlightRows(highrows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor()); } else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) { this->_model->HightlightRows(deleterows,Setting::BusAPI::instance()->getGraphOption()->getMeshFaceColor()); this->_model->HightlightRows(highrows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor()); } _preWindow->reRender(); } }