307 lines
7.8 KiB
C++
307 lines
7.8 KiB
C++
#include "cdialog.h"
|
||
#include <QTableWidget>
|
||
#include "ui_cdialog.h"
|
||
#include "ui_sigleview.h"
|
||
#include "ui_doubleeditview.h"
|
||
#include "ui_sigleTextview.h"
|
||
#include "geometryutils.h"
|
||
#include <QGridLayout>
|
||
#include <QMessageBox>
|
||
|
||
|
||
|
||
CDialog::CDialog(QWidget *parent) :
|
||
QDialog(parent),
|
||
ui(new Ui::CDialog),
|
||
doubleUi(new Ui::DoubleView),
|
||
signleUi(new Ui::SignleView),
|
||
signleTextUi(new Ui::SignleTextView)
|
||
{
|
||
|
||
m_num=0;
|
||
ui->setupUi(this);
|
||
// setWindowFlags(Qt::Dialog|Qt::WindowStaysOnTopHint|Qt::WindowTitleHint| Qt::CustomizeWindowHint);
|
||
setWindowFlags(Qt::Dialog|Qt::WindowTitleHint| Qt::CustomizeWindowHint);
|
||
// QObject::connect(ui->btnOk, SIGNAL(clicked()), this, SLOT(on_btnOk_clicked()));
|
||
QObject::connect(ui->cancelbtn, SIGNAL(clicked()), this, SLOT(slotCancel()));
|
||
}
|
||
|
||
CDialog::~CDialog()
|
||
{
|
||
delete ui;
|
||
delete doubleUi;
|
||
delete signleUi;
|
||
|
||
}
|
||
void CDialog::slotCancel()
|
||
{
|
||
reject ();
|
||
}
|
||
|
||
|
||
void CDialog::setMessage(const QString &msg)
|
||
{
|
||
int val=m_num%3;
|
||
if(!val)return;
|
||
else if(val==1)doubleUi->textEdit_2->setText(msg);
|
||
else signleTextUi->textEdit_2->setText(msg);
|
||
}
|
||
|
||
void CDialog::setTitle(const QString &title)
|
||
{
|
||
|
||
this->setWindowTitle(title);
|
||
}
|
||
|
||
void CDialog::closeDialog()
|
||
{
|
||
this->close();
|
||
}
|
||
|
||
void CDialog::on_btnOk_clicked()
|
||
{
|
||
//beCheck点击确定时是否需要对字符串有效性检查,col1、col2为检查的列序号
|
||
int val=m_num%3;
|
||
if(m_beCheck&&val<=1)
|
||
{
|
||
int col,row;
|
||
if(!val)
|
||
{
|
||
col=signleUi->tableWidget->columnCount();
|
||
row=signleUi->tableWidget->rowCount();
|
||
}
|
||
else
|
||
{
|
||
col=doubleUi->tableWidget->columnCount();
|
||
row=doubleUi->tableWidget->rowCount();
|
||
}
|
||
QString name,colname;
|
||
for(int i=0;i<col;i++)
|
||
{
|
||
if(!val)colname=signleUi->tableWidget->horizontalHeaderItem(i)->text();
|
||
else colname=doubleUi->tableWidget->horizontalHeaderItem(i)->text();
|
||
if(colname=="导入井名")//QString::fromLocal8Bit("导入井名"))//"导入表名
|
||
{
|
||
for(int j=0;j<row;j++)
|
||
{
|
||
int IsCheck=0;
|
||
if(!val)IsCheck=signleUi->tableWidget->item(j,0)->checkState();
|
||
else IsCheck=doubleUi->tableWidget->item(j,0)->checkState();
|
||
if(!IsCheck)continue;
|
||
if(!val)name=signleUi->tableWidget->item(j,i)->text() ;
|
||
else name=doubleUi->tableWidget->item(j,i)->text() ;
|
||
if(name==""){
|
||
QMessageBox::warning(NULL,"提示","导入井名不能为空");
|
||
return;
|
||
}
|
||
if(IsValidWellName(name)==0){
|
||
QMessageBox::warning(NULL,"提示","'"+name+"'不符合井名命名规则");
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
else if(colname=="导入表名")//QString::fromLocal8Bit("导入表名"))//"导入表名
|
||
{
|
||
for(int j=0;j<row;j++)
|
||
{
|
||
int IsCheck=0;
|
||
if(!val)IsCheck=signleUi->tableWidget->item(j,0)->checkState();
|
||
else IsCheck=doubleUi->tableWidget->item(j,0)->checkState();
|
||
if(!IsCheck)continue;
|
||
if(!val)name=signleUi->tableWidget->item(j,i)->text() ;
|
||
else name=doubleUi->tableWidget->item(j,i)->text() ;
|
||
if(name==""){
|
||
QMessageBox::warning(NULL,"提示","导入表名不能为空");
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
this->close();
|
||
accept();
|
||
}
|
||
void CDialog::clearControls(QObjectList list)
|
||
{
|
||
QObject* child=NULL;
|
||
for(int i=0;i<list.size();i++)
|
||
{
|
||
child=list.value(i);
|
||
if(NULL != child)
|
||
{
|
||
delete child;
|
||
child=NULL;
|
||
}
|
||
|
||
}
|
||
}
|
||
//设置对话框类型:0-只有列表框,1-左列表,右文本,2-只有文本框
|
||
//beCheck点击确定时是否需要对字符串有效性检查
|
||
void CDialog::setDialogType(int num,bool beCheck)
|
||
{
|
||
m_num=num;
|
||
m_beCheck=beCheck;
|
||
QObjectList lst=ui->widgetView->children();
|
||
clearControls(lst);
|
||
int val=m_num%3;
|
||
if(val==0)
|
||
{
|
||
signleUi->setupUi(ui->widgetView);
|
||
}
|
||
else if(val==1)
|
||
{
|
||
doubleUi->setupUi(ui->widgetView);
|
||
}
|
||
else
|
||
{
|
||
signleTextUi->setupUi(ui->widgetView);
|
||
}
|
||
}
|
||
|
||
|
||
void CDialog::showEvent(QShowEvent *event)
|
||
{
|
||
QDialog::showEvent(event);
|
||
QRect geome= geometry();
|
||
QSize dialogSize=geome.size();
|
||
QSize sizeView;
|
||
int val=m_num%3;
|
||
switch (val) {
|
||
case 0:
|
||
{
|
||
|
||
sizeView=signleUi->verticalLayout->sizeHint();
|
||
|
||
}
|
||
break;
|
||
case 1:
|
||
{
|
||
sizeView=doubleUi->horizontalLayout->sizeHint();
|
||
}
|
||
break;
|
||
default:
|
||
{
|
||
sizeView=signleTextUi->horizontalLayout->sizeHint();
|
||
}
|
||
break;
|
||
}
|
||
|
||
setGeometry(geome.x(),geome.y(),sizeView.width(),dialogSize.height());
|
||
|
||
}
|
||
void CDialog::setTiShi(int No,QString mes)
|
||
{
|
||
int val=m_num%3;
|
||
if(!val&&No>1)return;
|
||
if(val>=2&&No>1)return;
|
||
switch (No) {
|
||
case 0:
|
||
{
|
||
|
||
if(!val)signleUi->label->setText(mes);
|
||
else if(val==1)doubleUi->label->setText(mes);
|
||
else signleTextUi->label_3->setText(mes);
|
||
break;
|
||
}
|
||
case 1:
|
||
{
|
||
if(!val)signleUi->label_2->setText(mes);
|
||
else if(val==1)doubleUi->label_2->setText(mes);
|
||
else signleTextUi->label_4->setText(mes);
|
||
break;
|
||
}
|
||
case 2:
|
||
{
|
||
doubleUi->label_3->setText(mes);
|
||
break;
|
||
}
|
||
case 3:
|
||
{
|
||
doubleUi->label_4->setText(mes);
|
||
break;
|
||
}
|
||
}
|
||
|
||
}
|
||
void CDialog::init(int row,int col,QStringList header)
|
||
{
|
||
int val=m_num%3;
|
||
if(val>=2)return;
|
||
switch (val) {
|
||
case 0:
|
||
{
|
||
|
||
signleUi->tableWidget->setColumnCount(col);
|
||
signleUi->tableWidget->setHorizontalHeaderLabels(header);
|
||
|
||
signleUi->tableWidget->horizontalHeader()->setStretchLastSection(true);
|
||
signleUi->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
|
||
if(col>=2)signleUi->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
|
||
if(col>=3)signleUi->tableWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents);
|
||
signleUi->tableWidget->setRowCount(row);
|
||
break;
|
||
}
|
||
default:
|
||
{
|
||
doubleUi->tableWidget->setColumnCount(col);
|
||
doubleUi->tableWidget->setHorizontalHeaderLabels(header);
|
||
|
||
doubleUi->tableWidget->horizontalHeader()->setStretchLastSection(true);
|
||
doubleUi->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
|
||
if(col>=2)doubleUi->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
|
||
if(col>=3)doubleUi->tableWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents);
|
||
doubleUi->tableWidget->setRowCount(row);
|
||
}
|
||
break;
|
||
}
|
||
|
||
}
|
||
void CDialog::setCheckState(int row, int column, Qt::CheckState state)
|
||
{
|
||
int val=m_num%3;
|
||
if(val>=2)return;
|
||
if(!val)signleUi->tableWidget->item(row,column)->setCheckState(Qt::Checked);
|
||
else doubleUi->tableWidget->item(row,column)->setCheckState(Qt::Checked);
|
||
}
|
||
void CDialog::setFlags(int row, int column, Qt::ItemFlags flags)//设置单元格编辑状态
|
||
{
|
||
int val=m_num%3;
|
||
if(val>=2)return;
|
||
if(!val)signleUi->tableWidget->item(row,column)->setFlags(flags);
|
||
else doubleUi->tableWidget->item(row,column)->setFlags(flags);
|
||
}
|
||
void CDialog::setItem(int row, int col, QString str)//QTableWidgetItem *item)
|
||
{
|
||
int val=m_num%3;
|
||
if(val>=2)return;
|
||
switch (val) {
|
||
case 0:
|
||
{
|
||
signleUi->tableWidget->setItem(row,col,new QTableWidgetItem(str));//new QTableWidgetItem(QString::number(i*col+j)));
|
||
//if(!col)signleUi->tableWidget->item(row,0)->setCheckState(Qt::Checked);
|
||
break;
|
||
}
|
||
default:
|
||
{
|
||
doubleUi->tableWidget->setItem(row,col,new QTableWidgetItem(str));//new QTableWidgetItem(QString::number(i*col+j)));
|
||
//if(!col)doubleUi->tableWidget->item(row,0)->setCheckState(Qt::Checked);
|
||
}
|
||
break;
|
||
}
|
||
|
||
}
|
||
QString CDialog::getItem(int row, int column)
|
||
{
|
||
int val=m_num%3;
|
||
if(val>=2)return "";
|
||
if(!val)return signleUi->tableWidget->item(row,column)->text();
|
||
else return doubleUi->tableWidget->item(row,column)->text();
|
||
}
|
||
bool CDialog::getCheckState(int row, int column)
|
||
{
|
||
int val=m_num%3;
|
||
if(val>=2)return 0;
|
||
if(!val)return signleUi->tableWidget->item(row,column)->checkState();
|
||
else return doubleUi->tableWidget->item(row,column)->checkState();
|
||
}
|