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

1
.gitignore vendored
View File

@@ -10,3 +10,4 @@
/.vs/
/CMakeSettings.json
/src/translations/copy.bat
/build

3
.idea/misc.xml generated
View File

@@ -4,4 +4,7 @@
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="ProjectPlainTextFileTypeManager">
<file url="file://$PROJECT_DIR$/src/forms/recon/ScanSearchCriteriaForm.ui" />
</component>
</project>

View File

@@ -361,11 +361,11 @@ const char* FRAME_FILE_PATH_2 = "./pre_image.bin";
int previewCount = 0;
const char* GetPreviewData() {
previewCount++;
if (previewCount>3){
status = READY;
innerCallback("Preview Device Error");
return NULL;
}
// if (previewCount>3){
// status = READY;
// innerCallback("Preview Device Error");
// return NULL;
// }
FILE* file;
preivew_change_flag++;
preivew_change_flag = preivew_change_flag % 2;

View File

@@ -25,5 +25,14 @@ void ListBox::paintEvent(QPaintEvent *e) {
painter.drawText(x,y,this->text());
}
void ListBox::setSmallBox(bool isSmall) {
if (isSmall){
this->setObjectName("ListBoxSmall");
}
else{
this->setObjectName("ListBox");
}
}

View File

@@ -11,7 +11,7 @@ class ListBox: public QToolButton {
public:
explicit ListBox(QWidget* parent = nullptr);
~ListBox() override = default;
void setSmallBox(bool isSmall);
protected:
void paintEvent(QPaintEvent* e) override;

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);

BIN
src/icons/query.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
src/icons/trash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -53,5 +53,7 @@
<file>icons/arrow-down.png</file>
<file>icons/arrow-up.png</file>
<file>icons/drainage.png</file>
<file>icons/trash.png</file>
<file>icons/query.png</file>
</qresource>
</RCC>

View File

@@ -23,6 +23,11 @@ QPushButton {
stop: 1 #606060);
}
QPushButton:hover {
background: #505050;
border: 1px solid #4a88c7;
}
QToolButton {
border: none;
border-radius: 10%;
@@ -148,6 +153,7 @@ QTabBar::tab:selected, QTabBar::tab:hover {
QTabWidget::pane {
margin: 0;
border-bottom: 1px solid #323232;
border-top: 1px solid #505050;
}
/* Global TableView & ListView */
@@ -364,7 +370,7 @@ QLabel#systemMsgBar {
}
/*------TabFormWidget--------------------------------------------------------*/
QWidget#contentWidget {
TabFormWidget {
border-top: 1px solid #505050;
}
@@ -454,6 +460,13 @@ QToolButton#btnSelect {
qproperty-icon:url(":/icons/selected.png");
}
QToolButton#btnDiscard {
qproperty-icon:url(":/icons/trash.png");
}
QToolButton#btnRefreshData {
qproperty-icon:url(":/icons/refresh.png");
}
/*------ScanFormWidget-------------------------------------------------------*/
QWidget#paramWidget {
min-width: 300px;
@@ -549,10 +562,6 @@ QToolButton#btnDrainage {
}
/*------AdminSettingForm---------------------------------------------------*/
QWidget#settingContentWidget {
border-top: 1px solid #505050;
}
QWidget#settingContentWidget QStackedWidget{
margin-top: 5;
}
@@ -581,6 +590,11 @@ QWidget#commandWidgetnoBBorder {
max-height: 123px;
border-top: 1px solid #505050;
}
/*-------SearchCriteriaForm--------------------------------------------------*/
QWidget#SearchCriteriaForm QPushButton {
min-height: 38px;
max-height: 38px;
}
/*------Dialogs--------------------------------------------------------------*/
@@ -703,11 +717,23 @@ QToolButton#ListBox {
max-height: 30px;
border: 1px solid #4a88c7;
border-radius: 5px;
color: grey;
qproperty-toolButtonStyle:ToolButtonTextBesideIcon;
qproperty-iconSize:30px 30px;
qproperty-icon:url(":/icons/arrow-down.png");
}
QToolButton#ListBoxSmall {
font-size: 16px;
background-color: #505050;
color: #fcfcfc;
min-height: 20px;
max-height: 20px;
border: 1px solid #4a88c7;
border-radius: 3px;
color: white;
qproperty-toolButtonStyle:ToolButtonTextBesideIcon;
qproperty-iconSize:20px 20px;
qproperty-icon:url(":/icons/arrow-down.png");
}
ListBox {
qproperty-icon:url(":/icons/arrow-down.png");
}

View File

@@ -10,6 +10,7 @@
#include "event/EventCenter.h"
#include "forms/TabFormWidget.h"
#include "forms/recon/ReconFormWidget.h"
#include "forms/select/SelectFormWidget.h"
#include "forms/scan/ScanFormWidget.h"
#include "forms/settings/SettingFormWidget.h"
@@ -107,7 +108,7 @@ void MainWindow::initializeTabWidget()
mTabWidget->addTab(selectForm, tr("Select"));
auto scanForm = new ScanFormWidget(this);
mTabWidget->addTab(scanForm, tr("Scan"));
auto verifyForm = new TabFormWidget(this);
auto verifyForm = new ReconFormWidget(this);
mTabWidget->addTab(verifyForm, tr("Verify"));
mTabWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}