#include "userdialog.h" #include "ui_userdialog.h" #include #include "cdatabaseinterface.h" #include #include #include #include UserDialog::UserDialog(QWidget *parent) : QWidget(parent), ui(new Ui::UserDialog) { ui->setupUi(this); this->setWindowFlags(Qt::FramelessWindowHint); //设置无边框 setAttribute(Qt::WA_TranslucentBackground,true); //设置透明 ui->ID_LineEdit->setReadOnly(true); //添加此语句是为了使样式生效 ui->sex_ComboBox->setView(new QListView()); ui->bodyIndex_ComboBox->setView(new QListView()); // ui->bodyIndex_ComboBox->setStyleSheet("#bodyIndex_ComboBox{text-align:left;}"); // ui->bodyIndex_ComboBox->lineEdit()->setAlignment(Qt::AlignLeft); initWidget(); } UserDialog::~UserDialog() { delete ui; } void UserDialog::setDialogTitle(USER_ENUM type,int ID ) { m_type = type; switch(type) { case E_NEW_USER: setNewUserType(); break; case E_EDIT_USER: setEditUserType(ID); break; } } void UserDialog::on_cancel_Btn_clicked() { this->close(); } void UserDialog::on_save_Btn_clicked() { ST_PatientMsg st_patientMsg; st_patientMsg.ID = ui->ID_LineEdit->text().toUInt(); st_patientMsg.age =QDate::currentDate().year() - ui->dateEdit->date().year(); st_patientMsg.birthday = ui->dateEdit->date(); st_patientMsg.bodyIndex = ui->bodyIndex_ComboBox->currentIndex(); st_patientMsg.markMsg = ui->textEdit->toPlainText(); st_patientMsg.name = ui->name_LineEdit->text(); st_patientMsg.phone = ui->phone_LineEdit->text(); st_patientMsg.sex = ui->sex_ComboBox->currentIndex(); QString tableName("PatientTable"); QVariantMap vMap = patientMsgToVariantMap(st_patientMsg); //删除所有空格 if(st_patientMsg.name.remove(QRegExp("\\s")).isEmpty()) { QMessageBox::information(NULL,tr("提示"),tr("用户名不能为空")); } else if(E_NEW_USER == m_type) { if(!CDatabaseInterface::getInstance()->insertRowTable(tableName,vMap)) { QString str = CDatabaseInterface::getInstance()->getLastError(); QMessageBox::information(NULL,tr("提示"),str); this->close(); } else { emit signalUpdateUserTable(); QMessageBox::information(NULL,tr("提示"),tr("添加成功")); this->close(); } } else if(E_EDIT_USER == m_type) { if(!CDatabaseInterface::getInstance()->updateRowTable(tableName,"ID",vMap)) { QString str = CDatabaseInterface::getInstance()->getLastError(); QMessageBox::information(NULL,tr("提示"),str); this->close(); } else { emit signalUpdateUserTable(); QMessageBox::information(NULL,tr("提示"),tr("更新成功")); this->close(); } } } void UserDialog::setEditUserType(int ID) { ui->title_Label->setText(tr("编辑用户")); //根据ID查找用户 QString queryStr(QString("select * from PatientTable where ID = '%1'").arg(ID)); ST_PatientMsg st_PatientMsg; if(CDatabaseInterface::getInstance()->exec(queryStr)) { if(CDatabaseInterface::getInstance()->getValuesSize() > 0) { QList valueMapList; valueMapList = CDatabaseInterface::getInstance()->getValues(0,1); st_PatientMsg = variantMapToPatientMsg(valueMapList.at(0)); ui->name_LineEdit->setText(st_PatientMsg.name); ui->sex_ComboBox->setCurrentIndex(st_PatientMsg.sex); ui->bodyIndex_ComboBox->setCurrentIndex(st_PatientMsg.bodyIndex); ui->textEdit->setText(st_PatientMsg.markMsg); ui->phone_LineEdit->setText(st_PatientMsg.phone); ui->dateEdit->setDate(st_PatientMsg.birthday); ui->ID_LineEdit->setText(QString::number(st_PatientMsg.ID)); } else { qDebug()<<"未查询到符合条件的数据"; } } this->show(); } void UserDialog::setNewUserType() { ui->title_Label->setText(tr("新建用户")); ui->name_LineEdit->clear(); ui->sex_ComboBox->setCurrentIndex(0); ui->bodyIndex_ComboBox->setCurrentIndex(0); ui->textEdit->clear(); ui->phone_LineEdit->clear(); QDate defaultDate(1990,1,1); ui->dateEdit->setDate(defaultDate); //自动生成ID int ID(100000); //先查询数据库查找出最大的ID QString query(QString("select * from PatientTable order by ID DESC")); CDatabaseInterface *dataBase = CDatabaseInterface::getInstance(); if(dataBase->exec(query)) { int size = dataBase->getValuesSize(); if(size > 0) { QVariantMap varMap =dataBase->getValues(0,1).at(0); ST_PatientMsg st_patient = variantMapToPatientMsg(varMap); ID = st_patient.ID+1; } } else qDebug()<getLastError(); ui->ID_LineEdit->setText(QString::number(ID)); this->show(); } void UserDialog::initWidget() { //设置lineEdit的输入限制 //电话限制 QRegExp reg("^[0-9]*$"); ui->phone_LineEdit->setValidator(new QRegExpValidator(reg, this)); ui->phone_LineEdit->setMaxLength(11); //姓名限制 QRegExp reg2("[\u4e00-\u9fa5A-Za-z0-9]+$"); ui->name_LineEdit->setValidator(new QRegExpValidator(reg2,this)); //年龄限制 QRegularExpression rege3("^(19[5-9][0-9]|20[0-4][0-9]|2050)-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$"); //ui->dateEdit->setValidator; //ui->dateEdit->validate(); // 创建正则表达式模式 //QRegularExpression dateExp("[1-2][9|0][5-9][0-9]|20[0-4][0-9]|2050"); // 将正则表达式应用于QDateEdit // QRegularExpressionValidator* validator = new QRegularExpressionValidator(dateExp, &dateEdit); //ui->dateEdit->setValidator(validator); } void UserDialog::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QPainter painter(this); painter.fillRect(rect(),QColor(0,0,0,100)); } void UserDialog::changeEvent(QEvent* event) { switch (event->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: QWidget::changeEvent(event); break; } }