LAMPCAE/src/MainWidgets/SelectNodeShow.cpp

284 lines
9.6 KiB
C++
Raw Normal View History

#include <QMessageBox>
#include "SelectNodeShow.h"
#include "ui_SelectNodeShow.h"
#include <QtSql/QSqlError>
#include <QHeaderView>
#include <QtSql/QSqlTableModel>
#include <QtSql/QSqlRecord>
#include <QtSql/QSqlField>
#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<int> 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<int, int> 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<int> 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<int, int>* 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<int> deleterows;
QList<int> highrows;
deleterows.clear();
highrows.clear();
for(int i=0;i<selectRows.size();i++) {
if(this->_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<int> 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<int> deleterows;
QList<int> highrows;
deleterows.clear();
highrows.clear();
// 针对所有行进行操作
for(int i=0;i<this->_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();
}
}