Patient table change, add order by add date

This commit is contained in:
Krad
2021-12-03 14:21:21 +08:00
parent 168140fb6f
commit 3d317e757a
5 changed files with 56 additions and 16 deletions

View File

@@ -6,6 +6,7 @@
#include <QHBoxLayout>
#include <QToolButton>
#include <QTableWidget>
#include "components/SlideableTableView.h"
#include <QHeaderView>
#include <QUuid>
#include <QDate>
@@ -22,6 +23,15 @@
item->setTextAlignment(Qt::AlignmentFlag::AlignCenter);\
table->setItem(row,col,item);
int queryValue(QSqlTableModel* model, int colID, QVariant var)
{
for (int i = 0; i < model->rowCount(); ++i) {
if (model->data(model->index(i,colID))==var) return i;
}
return -1;
}
SelectFormWidget::SelectFormWidget(QWidget *parent) :
TabFormWidget(parent)
{
@@ -60,33 +70,38 @@ SelectFormWidget::SelectFormWidget(QWidget *parent) :
QHBoxLayout* contentLayout =new QHBoxLayout();
this->ui->contentWidget->setLayout(contentLayout);
// TableView for patient
QTableView* table= new QTableView(this);
QTableView* table= new SlideableTableView(this);
table->setAlternatingRowColors(true);
table->setSelectionMode(QAbstractItemView::SingleSelection);
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
table->setSelectionBehavior(QAbstractItemView::SelectRows);
table->verticalHeader()->setDefaultSectionSize(38);
table->horizontalHeader()->setStretchLastSection(true);
//dat from SQLITE
//data from SQLITE
auto model = SQLHelper::getTable("Patient");
model->setFilter("Flag=0");
model->sort(5,Qt::DescendingOrder);
model->select();
model->setHeaderData(1,Qt::Horizontal,"ID");
model->setHeaderData(2,Qt::Horizontal,"Name");
model->setHeaderData(3,Qt::Horizontal,"Birth Date");
model->setHeaderData(5,Qt::Horizontal,"Add Date");
table->setModel((QAbstractItemModel*)model);
table->hideColumn(0);
table->hideColumn(6);
table->hideColumn(7);
table->show();
// table->setSortingEnabled(true);
table->setColumnWidth(1,250);
table->setColumnWidth(2,250);
table->setColumnWidth(3,120);
table->setColumnWidth(4,60);
table->setColumnWidth(5,250);
// table->sortByColumn(5);
// table->setSortingEnabled(true);
contentLayout->addWidget(table);
QWidget* spacerLine2= new QWidget(this);
spacerLine2->setFixedWidth(2);
@@ -136,15 +151,28 @@ SelectFormWidget::SelectFormWidget(QWidget *parent) :
connect(edit_patient, &EditPatientForm::editCancel,[=](){
btnSelect->setEnabled(true);
});
connect(edit_patient, &EditPatientForm::editAccept,[=](PatientInformation* inf){
connect(edit_patient, &EditPatientForm::editAccept,[=](PatientInformation* inf, bool& result){
int selectedRow = currentRow;
bool isAdd = inf->PatientUID.isEmpty();
if (isAdd) {
int ref_rowid = queryValue(model, 1, inf->ID);
if(ref_rowid>=0)
{
//非触屏时,如果被选中的行在选中区域外,以下代码可能会出错
//但是触屏时一般没问题
qDebug()<<ref_rowid;
table->scrollTo(model->index(ref_rowid,3));
table->selectRow(ref_rowid);
result = false;
return;
}
selectedRow = model->rowCount();
inf->PatientUID = QUuid::createUuid().toString();
printf(inf->PatientUID.toStdString().data());
model->insertRow(selectedRow);
inf->AddDate = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
model->insertRow(0);
selectedRow = 0;
}
qDebug()<<inf->PatientUID<<inf->AddDate;
#define ADD_PATIENT_PROPERTY(val)\
model->setData(model->index(selectedRow,PatientInformationEnum:: val),inf-> val);
EDIT_PATIENT()
@@ -221,6 +249,7 @@ SelectFormWidget::SelectFormWidget(QWidget *parent) :
}
SelectFormWidget::~SelectFormWidget()
{
}