284 lines
9.6 KiB
C++
284 lines
9.6 KiB
C++
|
#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();
|
||
|
|
||
|
|
||
|
}
|
||
|
}
|