ReconFormWidget

This commit is contained in:
Krad
2023-08-21 11:21:35 +08:00
parent 17d278d39c
commit d1dc5df680
20 changed files with 610 additions and 20 deletions

View File

@@ -25,3 +25,10 @@ void TabFormWidget::addVerticalLine(QHBoxLayout *layout) {
spacerLine->setObjectName("verSpaceLine");
layout->addWidget(spacerLine);
}
void TabFormWidget::insertVerticalLine(int index, QHBoxLayout *layout) {
auto spacerLine = new QWidget(this);
spacerLine->setFixedWidth(2);
spacerLine->setObjectName("verSpaceLine");
layout->insertWidget(index,spacerLine);
}

View File

@@ -17,6 +17,8 @@ public:
protected:
Ui::TabFormWidget *ui;
void addVerticalLine(QHBoxLayout *layout);
void insertVerticalLine(int index, QHBoxLayout *layout);
};
#endif // TABFORMWIDGET_H

View File

@@ -16,7 +16,7 @@
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
@@ -33,10 +33,37 @@
<number>0</number>
</property>
<item>
<widget class="QWidget" name="contentWidget" native="true"/>
</item>
<item>
<widget class="QWidget" name="commandWidget" native="true"/>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="contentWidget" native="true"/>
</item>
<item>
<widget class="QWidget" name="commandWidget" native="true"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>

View File

@@ -0,0 +1,89 @@
#include "ReconFormWidget.h"
#include "ui_tabformwidget.h"
#include <QToolButton>
#include <QVBoxLayout>
#include <QHeaderView>
#include "components/SlideTableView.h"
#include "db/SQLHelper.h"
#include "ScanSearchCriteriaForm.h"
ReconFormWidget::ReconFormWidget(QWidget *parent)
: TabFormWidget(parent)
, mBtnDiscard(new QToolButton(this))
, mBtnDelete(new QToolButton(this))
, mBtnRefresh(new QToolButton(this))
, mScanTable(new SlideTableView(this))
, mModel(nullptr){
auto layout = new QHBoxLayout(ui->commandWidget);
layout->setAlignment(Qt::AlignmentFlag::AlignLeft);
mBtnDiscard->setObjectName("btnDiscard");
mBtnDelete->setObjectName("btnDelete");
mBtnRefresh->setObjectName("btnRefreshData");
mBtnDiscard->setText(tr("Discard"));
mBtnDelete->setText(tr("Delete"));
mBtnRefresh->setText(tr("Refresh"));
layout->addWidget(mBtnDiscard);
layout->addWidget(mBtnDelete);
layout->addSpacerItem(new QSpacerItem(20,20,QSizePolicy::Expanding));
addVerticalLine(layout);
layout->addWidget(mBtnRefresh);
initDataModel();
//Init content widget
QWidget * widget = new ScanSearchCriteriaForm(this);
widget->setObjectName("SearchCriteriaForm");
ui->horizontalLayout->insertWidget(0,widget);
insertVerticalLine(1,ui->horizontalLayout);
auto* contentLayout = new QHBoxLayout(this->ui->contentWidget);
contentLayout->setContentsMargins(0, 0, 0, 0);
initTableView(contentLayout);
}
void ReconFormWidget::initTableView(QHBoxLayout *contentLayout) {// TableView for Scan
mScanTable->setAlternatingRowColors(true);
mScanTable->setSelectionMode(QAbstractItemView::SingleSelection);
mScanTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
mScanTable->setSelectionBehavior(QAbstractItemView::SelectRows);
mScanTable->verticalHeader()->setDefaultSectionSize(38);
mScanTable->horizontalHeader()->setStretchLastSection(true);
//data from SQLITE
//
//avoid pan comsumed by tableview!
mScanTable->viewport()->ungrabGesture(Qt::PanGesture);
mScanTable->setSortingEnabled(true); // enable sortingEnabled
mScanTable->setModel((QAbstractItemModel*) mModel);
mScanTable->hideColumn(0);
mScanTable->hideColumn(1);
mScanTable->show();
mScanTable->setColumnWidth(2, 250);
mScanTable->setColumnWidth(3, 200);
mScanTable->setColumnWidth(4, 160);
mScanTable->setColumnWidth(5, 250);
mScanTable->setColumnWidth(6, 250);
contentLayout->addWidget(mScanTable);
//table current row selection changing event
// after sort by column
}
void ReconFormWidget::initDataModel() {//TODO:单独初始化预防SQL错误
mModel = SQLHelper::getTable("Scan");
mModel->sort(5, Qt::DescendingOrder);
mModel->select();
mModel->setHeaderData(2, Qt::Horizontal, "PatientID");
mModel->setHeaderData(5, Qt::Horizontal, tr("PatientName"));
mModel->setHeaderData(3, Qt::Horizontal, tr("Scan Time"));
mModel->setHeaderData(6, Qt::Horizontal, tr("Laterality"));
mModel->setHeaderData(7, Qt::Horizontal, tr("OperatorName"));
mModel->setHeaderData(8, Qt::Horizontal, tr("State"));
}

View File

@@ -0,0 +1,29 @@
#ifndef IMG1_V2_BIN_RECONFORMWIDGET_H
#define IMG1_V2_BIN_RECONFORMWIDGET_H
#include "forms/TabFormWidget.h"
class QToolButton;
class SlideTableView;
class QSqlTableModel;
class ReconFormWidget: public TabFormWidget {
Q_OBJECT
public:
explicit ReconFormWidget(QWidget *parent = nullptr);
~ReconFormWidget() override = default;
private:
QToolButton* mBtnDiscard;
QToolButton* mBtnDelete;
QToolButton* mBtnRefresh;
SlideTableView* mScanTable;
QSqlTableModel *mModel;
void initTableView(QHBoxLayout *contentLayout);
void initDataModel();
};
#endif //IMG1_V2_BIN_RECONFORMWIDGET_H

View File

@@ -0,0 +1,41 @@
#include "ScanSearchCriteriaForm.h"
#include "ui_ScanSearchCriteriaForm.h"
#include <QDate>
#include "components/ListBox.h"
ScanSearchCriteriaForm::ScanSearchCriteriaForm(QWidget *parent) :
QWidget(parent),
ui(new Ui::ScanSearchCriteriaForm)
{
ui->setupUi(this);
auto beginBox = new ListBox(this);
// beginBox->setSmallBox(true);
ui->verticalLayoutDate->replaceWidget(ui->mLBBeginDate,beginBox);
ui->mLBBeginDate->setVisible(false);
ui->mLBBeginDate->deleteLater();
ui->mLBBeginDate=beginBox;
ui->mLBBeginDate->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
ui->mLBBeginDate->setUpdatesEnabled(true);
ui->mLBBeginDate->setText(QDate::currentDate().toString("yyyy-MM-dd"));
auto endBox = new ListBox(this);
// endBox->setSmallBox(true);
ui->verticalLayoutDate->replaceWidget(ui->mLBEndDate,endBox);
ui->mLBEndDate->setVisible(false);
ui->mLBEndDate->deleteLater();
ui->mLBEndDate=endBox;
ui->mLBEndDate->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
ui->mLBEndDate->setUpdatesEnabled(true);
ui->mLBEndDate->setText(QDate::currentDate().toString("yyyy-MM-dd"));
ui->CriteriaTitle->setObjectName("parameterTitle");
ui->ScanTitle->setObjectName("parameterTitle");
ui->holder1->setObjectName("endSpaceLine");
}
ScanSearchCriteriaForm::~ScanSearchCriteriaForm()
{
delete ui;
}

View File

@@ -0,0 +1,22 @@
#ifndef SCANSEARCHCRITERIAFORM_H
#define SCANSEARCHCRITERIAFORM_H
#include <QWidget>
namespace Ui {
class ScanSearchCriteriaForm;
}
class ScanSearchCriteriaForm : public QWidget
{
Q_OBJECT
public:
explicit ScanSearchCriteriaForm(QWidget *parent = nullptr);
~ScanSearchCriteriaForm();
private:
Ui::ScanSearchCriteriaForm *ui;
};
#endif // SCANSEARCHCRITERIAFORM_H

View File

@@ -0,0 +1,331 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ScanSearchCriteriaForm</class>
<widget class="QWidget" name="ScanSearchCriteriaForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>310</width>
<height>624</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QLabel" name="ScanTitle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Scan Search</string>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_3">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>12</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>15</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QPushButton" name="mBtnToday">
<property name="text">
<string>Today</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnYesterday">
<property name="text">
<string>Yesterday</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnSevenDays">
<property name="text">
<string>Last 7 days</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnAll">
<property name="text">
<string>Search All</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_2">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayoutDate">
<property name="spacing">
<number>10</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Scan date from</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="mLBBeginDate">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Scan date to</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="mLBEndDate">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mBtnDates">
<property name="text">
<string>Search Dates</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="holder1">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="CriteriaTitle">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Search Criteria</string>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_4">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="4" column="0">
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Accession Number</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Patient ID</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="label_8">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Scan State</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Patient Name</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="6" column="0">
<widget class="QLineEdit" name="lineEdit_3"/>
</item>
<item row="7" column="0">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>Clear Fields</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="comboBox"/>
</item>
<item row="7" column="1">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>Query</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -218,7 +218,7 @@ void ScanFormWidget::renderLoading() {
mViewer->setPixmap(pic);
}
void ScanFormWidget::renderPreviewData(const QObject *data) {
void ScanFormWidget::renderPreviewData(const QObject *sender,const QObject *data) {
if (!data)return;
auto array = (QByteArray*)data;
auto raw_dataptr = (uchar*)array->data();

View File

@@ -38,7 +38,7 @@ private:
void initScanControlBar(QHBoxLayout *layout);
void initScanContent();
void renderLoading();
void renderPreviewData(const QObject *data);
void renderPreviewData(const QObject *sender,const QObject *data);
void reloadLanguage();
private slots:
void protocolChanged(int type);