From 8406ac104c707b931445f3dad0942f54bffa222e Mon Sep 17 00:00:00 2001 From: Krad Date: Tue, 12 Oct 2021 15:07:06 +0800 Subject: [PATCH] New UI for sex choose --- src/SelectFormWidget.cpp | 40 +++++++++++++-------------------- src/editpatientform.cpp | 47 +++++++++++++++++++++++++++++++-------- src/editpatientform.h | 2 ++ src/editpatientform.ui | 30 +------------------------ src/guimacros.h | 7 ++++-- src/icons/female.png | Bin 0 -> 4332 bytes src/icons/female_d.png | Bin 0 -> 4216 bytes src/icons/male.png | Bin 0 -> 3671 bytes src/icons/male_d.png | Bin 0 -> 3617 bytes src/res.qrc | 4 ++++ 10 files changed, 66 insertions(+), 64 deletions(-) create mode 100644 src/icons/female.png create mode 100644 src/icons/female_d.png create mode 100644 src/icons/male.png create mode 100644 src/icons/male_d.png diff --git a/src/SelectFormWidget.cpp b/src/SelectFormWidget.cpp index 360a266..4996fcd 100644 --- a/src/SelectFormWidget.cpp +++ b/src/SelectFormWidget.cpp @@ -29,6 +29,11 @@ SelectFormWidget::SelectFormWidget(QWidget *parent) : "QWidget#edit_patient{min-width:300px;max-width:300px;}" "QTableWidget{border:none}" "QTableView{alternate-background-color: #595959;selection-color:white;selection-background-color:#0078d8}" + "QToolButton#sexBtn{min-width:120px;max-width:120px;font-size:20px;padding:2px;}" + "QToolButton#sexBtn:disabled{color:silver}" + "QWidget#sexpanelwidget{border:1px solid silver;}" + "QWidget#sexpanelwidget:enabled{background-color: #515151;}" + "QToolButton#sexBtn:checked{border:2px solid darkorange;padding:0px;}" ; this->setStyleSheet(this->styleSheet().append(style)); @@ -89,11 +94,12 @@ SelectFormWidget::SelectFormWidget(QWidget *parent) : connect(table,&QTableView::clicked,[=](const QModelIndex & modelIndex){ if (currentRow!=modelIndex.row()) { + currentRow=modelIndex.row(); PatientInformation pat; -#define ADD_PATIENT_PROPERTY(val)\ + #define ADD_PATIENT_PROPERTY(val)\ pat. val = model->data(model->index(modelIndex.row(),PatientInformationEnum:: val)).toString(); EDIT_PATIENT() -#undef ADD_PATIENT_PROPERTY + #undef ADD_PATIENT_PROPERTY edit_patient->setPatientInformation(&pat); } }); @@ -107,38 +113,24 @@ SelectFormWidget::SelectFormWidget(QWidget *parent) : edit_patient->setEditEnable(true); }); connect(edit_patient, &EditPatientForm::editAccept,[=](PatientInformation* inf){ - -// QSqlRecord record = inf->PatientUID.isEmpty()?model->record():model->record(currentRow); - int rowCount = model->rowCount(); - - bool isAdd = false; + int selectedRow = currentRow; if (inf->PatientUID.isEmpty()) { - isAdd = true; + selectedRow = model->rowCount(); inf->PatientUID = QUuid::createUuid().toString(); printf(inf->PatientUID.toStdString().data()); - model->insertRow(rowCount); + model->insertRow(selectedRow); } #define ADD_PATIENT_PROPERTY(val)\ - model->setData(model->index(rowCount,PatientInformationEnum:: val),inf-> val); -// record.setValue(PatientInformationEnum:: val, inf-> val); + model->setData(model->index(selectedRow,PatientInformationEnum:: val),inf-> val); EDIT_PATIENT() #undef ADD_PATIENT_PROPERTY -// model->setData(model->index(rowCount,PatientInformationEnum::BirthDate), QDate::fromString(inf->BirthDate,"yyyy/MM/dd")); -// record.setValue(PatientInformationEnum::BirthDate, QDate::fromString(inf->BirthDate,"yyyy/MM/dd")); -// if (isAdd) -// { -// model->insertRecord(1,record); -// } else{ -// model->setRecord(currentRow,record); -// } -// model->database().transaction(); if (model->submitAll()) { -// model->database().commit(); + table->selectRow(selectedRow); + } + else{ + //TODO:add some error handle logic } -// else{ -// model->database().rollback(); -// } }); } diff --git a/src/editpatientform.cpp b/src/editpatientform.cpp index 382c6df..bd3836a 100644 --- a/src/editpatientform.cpp +++ b/src/editpatientform.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "guimacros.h" #include EditPatientForm::EditPatientForm(QWidget *parent) : @@ -10,11 +11,28 @@ EditPatientForm::EditPatientForm(QWidget *parent) : ui(new Ui::EditPatientForm) { ui->setupUi(this); - QListView* sex_v = new QListView(ui->cb_Sex); - sex_v->setItemAlignment(Qt::AlignCenter); - ui->cb_Sex->setView(sex_v); - QHBoxLayout* layout =new QHBoxLayout(); - this->ui->editcmdWidget->setLayout(layout); + QHBoxLayout* sexlayout =new QHBoxLayout(ui->sexpanelwidget); + sexlayout->setMargin(6); + ADD_TOOL_SIZE_BTN_TO_LAYOUT(F,":/icons/female_d.png",30, sexlayout); + ADD_TOOL_SIZE_BTN_TO_LAYOUT(M,":/icons/male_d.png", 30,sexlayout); +// btnFemale->setToolButtonStyle(Qt::ToolButtonIconOnly); +// btnMale->setToolButtonStyle(Qt::ToolButtonIconOnly); + btnF->setObjectName("sexBtn"); + btnM->setObjectName("sexBtn"); + btnF->setText("Female"); + btnM->setText("Male"); + ui->sexpanelwidget->setEnabled(editEnable); + btnF->setEnabled(editEnable); + btnM->setEnabled(editEnable); + btnF->setCheckable(true); + btnM->setCheckable(true); + QButtonGroup* group= new QButtonGroup(this); + group->addButton(btnF); + group->addButton(btnM); + btnF->setChecked(true); + btnFemale=btnF; + btnMale=btnM; + QHBoxLayout* layout =new QHBoxLayout(this->ui->editcmdWidget); ADD_TOOL_BTN(Cancel,":/icons/close_circle.png"); ADD_TOOL_BTN(Accpet,":/icons/selected.png"); btnCancel->setEnabled(editEnable); @@ -31,6 +49,8 @@ EditPatientForm::EditPatientForm(QWidget *parent) : restorePatientInformation(); }); connect(btnEditAccept,&QToolButton::clicked,[=](){ + if (ui->tbx_ID->text().isEmpty())return; + if (ui->tbx_Name->text().isEmpty())return; storePatientInformation(); this->setEditEnable(false); emit editAccept(getPatientInformation()); @@ -49,7 +69,8 @@ void EditPatientForm::setPatientInformation(PatientInformation *information) { ui->tbx_Dob->setDate(QDate::fromString(information->BirthDate,"yyyy-MM-dd")); ui->tbx_Name->setText(information->Name); ui->rtbx_Comment->setText(information->Comment); - ui->cb_Sex->setCurrentIndex(information->Sex=="F"?1:(information->Name=="M"?0:2)); + btnFemale->setChecked(information->Sex=="F"); + btnMale->setChecked(information->Sex!="F"); currentPatientUID = information->PatientUID; storePatientInformation(); } @@ -59,6 +80,8 @@ void EditPatientForm::clearPatientInformation() { ui->tbx_ID->setText(""); ui->tbx_Dob->setDate(QDate::currentDate()); ui->tbx_Name->setText(""); + btnFemale->setChecked(true); + btnMale->setChecked(false); ui->rtbx_Comment->setText(""); currentPatientUID = ""; } @@ -67,7 +90,11 @@ void EditPatientForm::setEditEnable(bool enable) { ui->tbx_ID->setEnabled(enable); ui->tbx_Dob->setEnabled(enable); ui->tbx_Name->setEnabled(enable); - ui->cb_Sex->setEnabled(enable); + ui->sexpanelwidget->setEnabled(enable); + btnFemale->setEnabled(enable); + btnFemale->setIcon(QIcon(enable?":/icons/female.png":":/icons/female_d.png")); + btnMale->setEnabled(enable); + btnMale->setIcon(QIcon(enable?":/icons/male.png":":/icons/male_d.png")); ui->rtbx_Comment->setEnabled(enable); btnEditAccept->setEnabled(enable); btnEditCancel->setEnabled(enable); @@ -82,7 +109,7 @@ void EditPatientForm::storePatientInformation() { store.ID = ui->tbx_ID->text(); store.BirthDate = ui->tbx_Dob->date().toString("yyyy-MM-dd"); store.Name = ui->tbx_Name->text(); - store.Sex = ui->cb_Sex->currentText().left(1); + store.Sex = btnFemale->isChecked()?"F":"M"; store.Comment = ui->rtbx_Comment->toPlainText(); qDebug()<tbx_Dob->setDate(QDate::fromString(store.BirthDate,"yyyy-MM-dd")); ui->tbx_Name->setText(store.Name); ui->rtbx_Comment->setText(store.Comment); - ui->cb_Sex->setCurrentText(store.Sex=="F"?"Female":(store.Name=="M"?"Male":"Other")); + btnFemale->setChecked(store.Sex=="F"); + btnMale->setChecked(store.Sex!="F"); +// ui->cb_Sex->setCurrentText(store.Sex=="F"?"Female":(store.Name=="M"?"Male":"Other")); } diff --git a/src/editpatientform.h b/src/editpatientform.h index 0dd21eb..723cca1 100644 --- a/src/editpatientform.h +++ b/src/editpatientform.h @@ -59,6 +59,8 @@ private: bool editEnable=false; QToolButton* btnEditAccept; QToolButton* btnEditCancel; + QToolButton* btnFemale; + QToolButton* btnMale; }; #endif // EDITPATIENTFORM_H diff --git a/src/editpatientform.ui b/src/editpatientform.ui index c140d57..5f91cc4 100644 --- a/src/editpatientform.ui +++ b/src/editpatientform.ui @@ -67,35 +67,7 @@ - - - false - - - alignment:center - - - 1 - - - true - - - - Male - - - - - Female - - - - - Other - - - + diff --git a/src/guimacros.h b/src/guimacros.h index f186821..edd5958 100644 --- a/src/guimacros.h +++ b/src/guimacros.h @@ -4,15 +4,18 @@ #ifndef GUI_GUIMACROS_H #define GUI_GUIMACROS_H -#define ADD_TOOL_BTN_TO_LAYOUT(name,img,layout)\ +#define ADD_TOOL_SIZE_BTN_TO_LAYOUT(name,img,size,layout)\ QToolButton* btn##name= new QToolButton(this);\ btn##name->setToolButtonStyle(Qt::ToolButtonIconOnly);\ btn##name->setIcon(QIcon(img));\ - btn##name->setIconSize(QSize(120,120));\ + btn##name->setIconSize(QSize(size,size));\ btn##name->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);\ btn##name->setText(#name);\ layout->addWidget(btn##name); +#define ADD_TOOL_BTN_TO_LAYOUT(name,img,layout)\ + ADD_TOOL_SIZE_BTN_TO_LAYOUT(name,img,120,layout) + #define ADD_TOOL_BTN(name,img)\ ADD_TOOL_BTN_TO_LAYOUT(name,img,layout) diff --git a/src/icons/female.png b/src/icons/female.png new file mode 100644 index 0000000000000000000000000000000000000000..16a0f9c75eac775c6bb19ad913b49021aa8a971a GIT binary patch literal 4332 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/lock.png icons/msg.png icons/patient.png + icons/female.png + icons/male.png + icons/female_d.png + icons/male_d.png