logplus/DataMgr/src/TiShiDlg.cpp
2025-10-30 09:50:15 +08:00

155 lines
4.4 KiB
C++

#pragma warning(push,0)
// #include "Family.h"
#include <QMessageBox>
#include "OSGFramework.h"
#include "TiShiDlg.h"
#include "ui_TiShi.h"
#include "CStringType.h"
#include "CheckHeadView.h"
#include <QCheckBox>
#pragma warning(pop)
// using namespace pai::ios::welllog;
BEGIN_OSGGRAPHICS_NAMESPACE
CTiShiDlg::CTiShiDlg(QWidget * parent, Qt::WindowFlags flags)
: QDialog(parent,flags)
{
m_pUI = new Ui_TiShi();
m_pUI->setupUi(this);
QObject::connect(m_pUI->okbtn, SIGNAL(clicked()), this, SLOT(slotSave()));
QObject::connect(m_pUI->cancelbtn, SIGNAL(clicked()), this, SLOT(slotCancel()));
connect(m_pUI->tableWidget, SIGNAL(cellClicked(int,int)), this, SLOT(settingTableChanged(int, int)));
}
void CTiShiDlg::slotSave()
{
QStringList nameList;
for(int i = 0;i<m_pUI->tableWidget->rowCount ();i++)
{
bool IsCheck=0;
for(int j = 1;j<m_pUI->tableWidget->columnCount ();j++)
{
if(m_pUI->tableWidget->item (i,j)->checkState ()==Qt::Checked)
{
IsCheck=1;break;
}
}
if(!IsCheck)nameList.append(m_pUI->tableWidget->item (i,0)->text());
}
if(nameList.count()==0)
{
accept();
return;
}
QString name="\r\n";
for(int i=0;i<nameList.count();i++)
{
if(i==20)name+="...";
if(i>=20)break;
name+=nameList.at(i)+"\r\n";
}
QMessageBox::warning(NULL,"提示","下列井没有任何勾选项:"+name+"请勾选后再加载");
return;
}
/**
*@brief 取消槽函数
*/
void CTiShiDlg::slotCancel()
{
reject ();
}
void CTiShiDlg::init()
{
m_pUI->tableWidget->setColumnCount(5);
m_pUI->tableWidget->setRowCount(namelist.size());
QStringList header;
header<<"井名"<<"替换"<<"合并"<<"另存"<<"放弃";
m_pUI->tableWidget->setHorizontalHeaderLabels(header);
m_pUI->tableWidget->horizontalHeader()->setStretchLastSection(true);
m_pUI->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
#pragma region 表头重画为勾选
QVector<int> rVector;
rVector <<1<<2 <<3;
CheckHeadView* pCheckHeadView = new CheckHeadView(rVector,Qt::Horizontal,m_pUI->tableWidget);
auto pCheckBox=pCheckHeadView->GetCheckBox(1);
if(pCheckBox)
{
pCheckBox->setChecked(true);
}
m_pUI->tableWidget->setHorizontalHeader(pCheckHeadView);
connect(pCheckHeadView, SIGNAL(SignalStatus(int, bool)), this, SLOT(slotSetMode(int, bool)));
#pragma endregion 表头重画为勾选
for(int i = 0;i<m_pUI->tableWidget->rowCount ();i++)
{
m_pUI->tableWidget->setItem(i,0,new QTableWidgetItem(namelist.at(i)));
for(int j=1;j<m_pUI->tableWidget->columnCount ();j++)
{
QTableWidgetItem *check=new QTableWidgetItem;
if(j==1)check->setCheckState (Qt::Checked);
else check->setCheckState (Qt::Unchecked);
m_pUI->tableWidget->setItem(i,j,check); //插入复选框
}
}
}
void CTiShiDlg::slotSetMode(int col,bool flag)
{
SetMode(col,flag);
if(flag)
{
CheckHeadView* pCheckHeadView=(CheckHeadView*)m_pUI->tableWidget->horizontalHeader();
for(int i=1;i<=4;i++)
{
if(i==col)continue;
SetMode(i,false);
if(i==4)continue;//最后一列没有头部勾选
auto pCheckBox=pCheckHeadView->GetCheckBox(i);
if(pCheckBox)
{
pCheckBox->setChecked(false);
}
}
}
}
void CTiShiDlg::SetMode(int col,bool flag)
{
for(int i = 0;i<m_pUI->tableWidget->rowCount ();i++)
{
if(flag)m_pUI->tableWidget->item (i,col)->setCheckState(Qt::Checked);
else m_pUI->tableWidget->item (i,col)->setCheckState(Qt::Unchecked);
/*for(int j = 1;j<m_pUI->tableWidget->columnCount ();j++)
{
if(j-1==mode)m_pUI->tableWidget->item (i,j)->setCheckState(Qt::Checked);
else m_pUI->tableWidget->item (i,j)->setCheckState(Qt::Unchecked);
}*/
}
}
void CTiShiDlg::settingTableChanged(int row, int col)
{
if(!col)return;
if(m_pUI->tableWidget->item (row,col)->checkState ()==Qt::Unchecked)
{
for(int j = 1;j<m_pUI->tableWidget->columnCount ();j++)
{
if(m_pUI->tableWidget->item (row,j)->checkState ()==Qt::Checked)return;
}
m_pUI->tableWidget->item (row,col)->setCheckState(Qt::Checked);
}
for(int j = 1;j<m_pUI->tableWidget->columnCount ();j++)
{
if(j==col)m_pUI->tableWidget->item (row,j)->setCheckState(Qt::Checked);
else m_pUI->tableWidget->item (row,j)->setCheckState(Qt::Unchecked);
}
//
CheckHeadView* pCheckHeadView=(CheckHeadView*)m_pUI->tableWidget->horizontalHeader();
for(int i=1;i<=3;i++)
{
if(i==col)continue;
auto pCheckBox=pCheckHeadView->GetCheckBox(i);
if(pCheckBox)
{
pCheckBox->setChecked(false);
}
}
//
}
END_OSGGRAPHICS_NAMESPACE