EmpInfoDialog::EmpInfoDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::EmpInfoDialog)
{
ui->setupUi(this);
InitInfoView();
connect(ui->InfoView,SIGNAL(clicked(QModelIndex)),this,SLOT(SetInfoLabels(QModelIndex)));
connect(ui->PartBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(RefreshInfoView(QString)));
// connect(ui->SiteBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(RefreshInfoView(QString)));
//2 connect(ui->PositionBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(RefreshInfoView(QString)));
}
EmpInfoDialog::~EmpInfoDialog()
{
delete ui;
}
void EmpInfoDialog::ClickAddButton()
{}
void EmpInfoDialog::ClickMoreButton()
{}
void EmpInfoDialog::InitInfoLabels()
{
ui->EmpID->setText("工号:");
ui->Name->setText("姓名:");
ui->Part->setText("部门:");
ui->Site->setText("地点:");
ui->Sex->setText("性别:");
ui->Position->setText("职务:");
ui->Birthday->setText("生日:");
ui->Email->setText("邮箱:");
ui->Edu->setText("学历:");
ui->HrLevel->setText("人事级别:");
ui->JoinDay->setText("入职日期:");
ui->Status->setText("状态:");
ui->LeaveDay->setText("离职日期:");
ui->Phone->setText("电话:");
ui->Native->setText("籍贯:");
ui->Address->setText("住址:");
ui->ID->setText("身份证:");
ui->CardNumber->setText("银行卡:");
ui->Photo->setText("PHOTO");
}
void EmpInfoDialog::InitInfoView()
{
QSqlTableModel *model=new QSqlTableModel();
model->setTable("hr_empinfo");
model->select();
model->removeColumns(3,3);
model->removeColumns(6,2);
model->removeColumns(7,8);
model->setHeaderData(0,Qt::Horizontal,"工号");
model->setHeaderData(1,Qt::Horizontal,"姓名");
model->setHeaderData(2,Qt::Horizontal,"性别");
model->setHeaderData(3,Qt::Horizontal,"部门");
model->setHeaderData(4,Qt::Horizontal,"地点");
model->setHeaderData(5,Qt::Horizontal,"职务");
model->setHeaderData(6,Qt::Horizontal,"状态");
ui->InfoView->setModel(model);
ui->InfoView->resizeColumnsToContents();
ui->InfoView->show();
}
QString EmpInfoDialog::SetConditions()
{
int i=0;
QString conditions;
conditions="";
if(ui->PartBox->currentIndex()==0)
{
_partcondition="";
}
else
{
_partcondition=ui->PartBox->currentText();
conditions="`part`=\""+_partcondition+"\"";
i=1;
}
qDebug()<<conditions;
if(ui->SiteBox->currentIndex()==0)
{
_sitecondition="";
}
else
{
_sitecondition=ui->SiteBox->currentText();
if(i==1){conditions+=" AND `site`=\""+_sitecondition+"\"";}
else{conditions="`part`=\""+_partcondition+"\"";i=1;}
}
qDebug()<<conditions;
if(ui->PositionBox->currentIndex()==0)
{
_poscondition="";
}
else
{
_poscondition=ui->PositionBox->currentText();
if(i==1){conditions+=" AND `position`=\""+_poscondition+"\"";}
else{conditions="`position`=\""+_poscondition+"\"";}
}
qDebug()<<conditions;
return conditions;
}
void EmpInfoDialog::SetInfoLabels(QModelIndex index)
{
InitInfoLabels();
if(index.column()==0)
{
//ui->EmpID->setText(ui->EmpID->text()+index.data().toString());//获取选中单元格数据
QSqlQuery query;
QString sqltmp;
sqltmp="SELECT * FROM hr_empinfo WHERE `empid`=\""+index.data().toString()+"\"";
query.exec(sqltmp);
if(query.next())
{
ui->EmpID->setText("工号:"+query.value(0).toString());
ui->Name->setText("姓名:"+query.value(1).toString());
ui->Sex->setText("性别:"+query.value(2).toString());
ui->Birthday->setText("生日:"+query.value(3).toString());
ui->JoinDay->setText("入职日期:"+query.value(4).toString());
ui->LeaveDay->setText("离职日期:"+query.value(5).toString());
ui->Part->setText("部门:"+query.value(6).toString());
ui->Site->setText("地点:"+query.value(7).toString());
ui->Position->setText("职务:"+query.value(8).toString());
ui->HrLevel->setText("人事级别:"+query.value(9).toString());
ui->Edu->setText("学历:"+query.value(10).toString());
ui->Status->setText("状态:"+query.value(11).toString());
ui->Phone->setText("电话:"+query.value(12).toString());
ui->Email->setText("邮箱:"+query.value(13).toString());
ui->ID->setText("身份证:"+query.value(14).toString());
ui->Address->setText("住址:"+query.value(15).toString());
ui->Native->setText("籍贯:"+query.value(16).toString());
ui->CardNumber->setText("银行卡:"+query.value(17).toString());
QPixmap pixmap;
pixmap.loadFromData(query.value(18).toByteArray());
ui->Photo->setPixmap(pixmap.scaled(ui->Photo->width(),ui->Photo->height(),Qt::KeepAspectRatio));
pixmap.scaledToWidth(100);
}
}
}
void EmpInfoDialog::RefreshInfoView(QString condition)
{
model->setTable("hr_empinfo");
model->setFilter(SetConditions());
SetConditions();
model->select();
ui->InfoView->setModel(model);
ui->InfoView->show();
}
我在UI界面做了三个QCombobox 想每次改变QCombobox的时候 就调用RefreshInfoView()来更新显示内容,但是现在一变程序就崩溃了
求高手指教