Refactor ScanFormWidget

This commit is contained in:
Krad
2022-06-29 09:56:13 +08:00
parent 65f8fdff05
commit 403d12e7e3
3 changed files with 55 additions and 55 deletions

View File

@@ -5,11 +5,9 @@
#include "ScanFormWidget.h" #include "ScanFormWidget.h"
#include "ui_tabformwidget.h" #include "ui_tabformwidget.h"
#include <QHBoxLayout>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QToolButton> #include <QToolButton>
#include <QButtonGroup> #include <QButtonGroup>
#include <QImage>
#include <QPainter> #include <QPainter>
#include <QLabel> #include <QLabel>
#include <qdebug.h> #include <qdebug.h>
@@ -32,7 +30,7 @@ namespace{
const float HALF_ROI_WIDTH = 100.0f; const float HALF_ROI_WIDTH = 100.0f;
} }
ScanFormWidget::ScanFormWidget(QWidget* parent) ScanFormWidget::ScanFormWidget(QWidget* parent)
: TabFormWidget(parent) : TabFormWidget(parent)
, mPatInf(new PatientInformationForm(this)) , mPatInf(new PatientInformationForm(this))
, mLblProtocol(new QLabel(this)) , mLblProtocol(new QLabel(this))
@@ -60,7 +58,7 @@ ScanFormWidget::ScanFormWidget(QWidget* parent)
"QLabel#lbl_e{font-size:20px;}" "QLabel#lbl_e{font-size:20px;}"
""; "";
this->setStyleSheet(this->styleSheet().append(style)); this->setStyleSheet(this->styleSheet().append(style));
QHBoxLayout* layout = new QHBoxLayout(); auto layout = new QHBoxLayout();
ui->commandWidget->setLayout(layout); ui->commandWidget->setLayout(layout);
initProtocolUI(layout); initProtocolUI(layout);
@@ -68,30 +66,7 @@ ScanFormWidget::ScanFormWidget(QWidget* parent)
addVerticalLine(layout); addVerticalLine(layout);
initScanControlBar(layout); initScanControlBar(layout);
initScanContent(); initScanContent();
//Events--------------------------------------------------------------- initEvents();
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
if (mUnInited)
{
mBtnScan->setEnabled(true);
mBtnRefresh->setEnabled(true);
mBtnPreview->setEnabled(true);
mBtnStop->setEnabled(true);
mUnInited = false;
}
mPatInf->setPatientInformation((PatientInformation*)data);
});
connect(EventCenter::Default(), &EventCenter::ResponseStop, [=](QObject* sender, QObject* data) {
setPreviewing(false);
});
connect(EventCenter::Default(), &EventCenter::ResponsePreview, this,&ScanFormWidget::renderLoading);
connect(EventCenter::Default(), &EventCenter::ResponsePreviewData, this,&ScanFormWidget::renderPreviewData);
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
mPatInf->setPatientInformation((PatientInformation*)data);
});
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, this, &ScanFormWidget::reloadLanguage);
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg){
setPreviewing(false);
});
} }
@@ -101,12 +76,12 @@ void ScanFormWidget::initProtocolUI(QHBoxLayout *layout) {
mLblProtocol->setObjectName("lbl_protocol"); mLblProtocol->setObjectName("lbl_protocol");
layout->addWidget(mLblProtocol); layout->addWidget(mLblProtocol);
addVerticalLine(layout); addVerticalLine(layout);
INIT_TOOL_BTN(Left, ":/icons/left.png"); INIT_TOOL_BTN(Left, ":/icons/left.png")
INIT_TOOL_BTN(Right, ":/icons/right.png"); INIT_TOOL_BTN(Right, ":/icons/right.png")
mBtnLeft->setText(tr("LEFT")); mBtnLeft->setText(tr("LEFT"));
mBtnRight->setText(tr("RIGHT")); mBtnRight->setText(tr("RIGHT"));
QButtonGroup* group = new QButtonGroup(this); auto group = new QButtonGroup(this);
mBtnLeft->setCheckable(true); mBtnLeft->setCheckable(true);
mBtnLeft->setChecked(true); mBtnLeft->setChecked(true);
mBtnRight->setCheckable(true); mBtnRight->setCheckable(true);
@@ -116,22 +91,22 @@ void ScanFormWidget::initProtocolUI(QHBoxLayout *layout) {
} }
void ScanFormWidget::initScanContent() { void ScanFormWidget::initScanContent() {
QHBoxLayout* contentLayout = new QHBoxLayout(); auto contentLayout = new QHBoxLayout();
ui->contentWidget->setLayout(contentLayout); ui->contentWidget->setLayout(contentLayout);
contentLayout->addWidget(mPatInf); contentLayout->addWidget(mPatInf);
QWidget* param_widget = new QWidget(this); auto param_widget = new QWidget(this);
QWidget* broadcast_widget = new QWidget(this); auto broadcast_widget = new QWidget(this);
broadcast_widget->setObjectName("broadcast_widget"); broadcast_widget->setObjectName("broadcast_widget");
mViewer->setObjectName("viewer"); mViewer->setObjectName("viewer");
mViewer->setFixedSize(800, 800); mViewer->setFixedSize(800, 800);
mViewer->setText(""); mViewer->setText("");
QHBoxLayout* viewerLayout = new QHBoxLayout(mViewer); auto viewerLayout = new QHBoxLayout(mViewer);
broadcast_widget->setLayout(viewerLayout); broadcast_widget->setLayout(viewerLayout);
viewerLayout->addWidget(mViewer); viewerLayout->addWidget(mViewer);
contentLayout->addWidget(broadcast_widget); contentLayout->addWidget(broadcast_widget);
param_widget->setObjectName("param_widget"); param_widget->setObjectName("param_widget");
QVBoxLayout* paramLayout = new QVBoxLayout(param_widget); auto paramLayout = new QVBoxLayout(param_widget);
mLblPreview->setText(tr("Preview Parameters")); mLblPreview->setText(tr("Preview Parameters"));
mLblPreview->setObjectName("lbl_title"); mLblPreview->setObjectName("lbl_title");
paramLayout->addWidget(mLblPreview); paramLayout->addWidget(mLblPreview);
@@ -139,7 +114,7 @@ void ScanFormWidget::initScanContent() {
mLblE->setObjectName("lbl_e"); mLblE->setObjectName("lbl_e");
mLblE->setText(tr("some settings\n\nparameters\n")); mLblE->setText(tr("some settings\n\nparameters\n"));
paramLayout->addWidget(mLblE); paramLayout->addWidget(mLblE);
QLabel* lbl_end = new QLabel(this); auto lbl_end = new QLabel(this);
lbl_end->setObjectName("lbl_end"); lbl_end->setObjectName("lbl_end");
paramLayout->addWidget(lbl_end); paramLayout->addWidget(lbl_end);
mLblParams->setText(tr("Scan Parameters")); mLblParams->setText(tr("Scan Parameters"));
@@ -149,7 +124,7 @@ void ScanFormWidget::initScanContent() {
mLblE2->setObjectName("lbl_e"); mLblE2->setObjectName("lbl_e");
mLblE2->setText(tr("some settings\n\nparameters\n")); mLblE2->setText(tr("some settings\n\nparameters\n"));
paramLayout->addWidget(mLblE2); paramLayout->addWidget(mLblE2);
QLabel* lbl_end2 = new QLabel(this); auto lbl_end2 = new QLabel(this);
lbl_end2->setObjectName("lbl_end"); lbl_end2->setObjectName("lbl_end");
paramLayout->addWidget(lbl_end2); paramLayout->addWidget(lbl_end2);
paramLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding)); paramLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
@@ -157,11 +132,11 @@ void ScanFormWidget::initScanContent() {
} }
void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){ void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){
INIT_TOOL_BTN(Refresh, ":/icons/scan_e.png"); INIT_TOOL_BTN(Refresh, ":/icons/scan_e.png")
INIT_TOOL_BTN(Preview, ":/icons/rec.png"); INIT_TOOL_BTN(Preview, ":/icons/rec.png")
INIT_TOOL_BTN(Stop, ":/icons/stop.png"); INIT_TOOL_BTN(Stop, ":/icons/stop.png")
INIT_TOOL_BTN(Scan, ":/icons/scan.png"); INIT_TOOL_BTN(Scan, ":/icons/scan.png")
mBtnRefresh->setText(tr("Refresh")); mBtnRefresh->setText(tr("Refresh"));
mBtnPreview->setText(tr("Preview")); mBtnPreview->setText(tr("Preview"));
@@ -174,16 +149,16 @@ void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){
mBtnStop->setEnabled(false); mBtnStop->setEnabled(false);
connect(mBtnRefresh, &QToolButton::clicked, [=]() { connect(mBtnRefresh, &QToolButton::clicked, [=]() {
QString patientInf(mPatInf->getCurrentPatientJsonString(true)); QString patientInf(mPatInf->getCurrentPatientJsonString(true));
LOG_USER_OPERATION(StartRefresh); LOG_USER_OPERATION(StartRefresh)
EventCenter::Default()->triggerEvent(RequestEmptyScan, nullptr, (QObject*)(&patientInf)); EventCenter::Default()->triggerEvent(RequestEmptyScan, nullptr, (QObject*)(&patientInf));
}); });
connect(mBtnPreview, &QToolButton::clicked, [=]() { connect(mBtnPreview, &QToolButton::clicked, [=]() {
LOG_USER_OPERATION(StartPreview); LOG_USER_OPERATION(StartPreview)
EventCenter::Default()->triggerEvent(RequestPreviewScan, nullptr, nullptr); EventCenter::Default()->triggerEvent(RequestPreviewScan, nullptr, nullptr);
}); });
connect(mBtnScan, &QToolButton::clicked, [=]() { connect(mBtnScan, &QToolButton::clicked, [=]() {
QString patientInf(mPatInf->getCurrentPatientJsonString(false)); QString patientInf(mPatInf->getCurrentPatientJsonString(false));
LOG_USER_OPERATION(StartScan); LOG_USER_OPERATION(StartScan)
if (!JsonObject::Instance()->getEmptyScanID()){ if (!JsonObject::Instance()->getEmptyScanID()){
QString msg(tr("No refresh data exists, please do Refresh operation first.")); QString msg(tr("No refresh data exists, please do Refresh operation first."));
EventCenter::Default()->triggerEvent(DeviceErrorRaise, nullptr, (QObject*)(&msg)); EventCenter::Default()->triggerEvent(DeviceErrorRaise, nullptr, (QObject*)(&msg));
@@ -192,7 +167,7 @@ void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){
EventCenter::Default()->triggerEvent(RequestPatientScan, nullptr, (QObject*)(&patientInf)); EventCenter::Default()->triggerEvent(RequestPatientScan, nullptr, (QObject*)(&patientInf));
}); });
connect(mBtnStop, &QToolButton::clicked, [=]() { connect(mBtnStop, &QToolButton::clicked, [=]() {
LOG_USER_OPERATION(Stop); LOG_USER_OPERATION(Stop)
EventCenter::Default()->triggerEvent(RequestStop, nullptr, nullptr); EventCenter::Default()->triggerEvent(RequestStop, nullptr, nullptr);
}); });
} }
@@ -214,9 +189,8 @@ void ScanFormWidget::setPreviewing(bool val) {
void ScanFormWidget::renderLoading() { void ScanFormWidget::renderLoading() {
setPreviewing(true); setPreviewing(true);
uchar c_data[PREVIEW_ROW][PREVIEW_COL]; uchar c_data[PREVIEW_ROW][PREVIEW_COL];
uchar* data_ptr = c_data[0];
for (int i = 0; i < PREVIEW_ROW; i++) { for (int i = 0; i < PREVIEW_ROW; i++) {
data_ptr = c_data[i]; uchar* data_ptr = c_data[i];
memset(data_ptr, 0, PREVIEW_COL); memset(data_ptr, 0, PREVIEW_COL);
} }
QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8); QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8);
@@ -238,16 +212,14 @@ void ScanFormWidget::renderLoading() {
void ScanFormWidget::renderPreviewData(const QObject *data) { void ScanFormWidget::renderPreviewData(const QObject *data) {
if (!data)return; if (!data)return;
QByteArray* array = (QByteArray*)data; auto array = (QByteArray*)data;
uchar* raw_dataptr = (uchar*)array->data(); auto raw_dataptr = (uchar*)array->data();
uchar c_data[PREVIEW_ROW][PREVIEW_COL]; uchar c_data[PREVIEW_ROW][PREVIEW_COL];
uchar* data_ptr = c_data[0];
for (int i = 0; i < PREVIEW_ROW; i++) { for (int i = 0; i < PREVIEW_ROW; i++) {
data_ptr = c_data[i]; uchar* data_ptr = c_data[i];
memcpy(data_ptr, raw_dataptr, PREVIEW_COL); memcpy(data_ptr, raw_dataptr, PREVIEW_COL);
raw_dataptr += PREVIEW_COL; raw_dataptr += PREVIEW_COL;
} }
raw_dataptr = (uchar*)array->data();
QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8); QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8);
mViewer->setFixedSize(800, 800); mViewer->setFixedSize(800, 800);
QPixmap pic = QPixmap::fromImage(img).scaledToHeight(800, Qt::SmoothTransformation); QPixmap pic = QPixmap::fromImage(img).scaledToHeight(800, Qt::SmoothTransformation);
@@ -275,7 +247,33 @@ void ScanFormWidget::renderPreviewData(const QObject *data) {
painter.drawText(400 - 13, 800 - borderSpacing - 13, "F"); painter.drawText(400 - 13, 800 - borderSpacing - 13, "F");
painter.drawText(borderSpacing + 6, borderSpacing + 30, "ROI"); painter.drawText(borderSpacing + 6, borderSpacing + 30, "ROI");
mViewer->setPixmap(pic); mViewer->setPixmap(pic);
return; }
void ScanFormWidget::initEvents() {//Events---------------------------------------------------------------
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
if (mUnInited)
{
mBtnScan->setEnabled(true);
mBtnRefresh->setEnabled(true);
mBtnPreview->setEnabled(true);
mBtnStop->setEnabled(true);
mUnInited = false;
}
mPatInf->setPatientInformation((PatientInformation*)data);
});
connect(EventCenter::Default(), &EventCenter::ResponseStop, [=](QObject* sender, QObject* data) {
setPreviewing(false);
});
connect(EventCenter::Default(), &EventCenter::ResponsePreview, this,&ScanFormWidget::renderLoading);
connect(EventCenter::Default(), &EventCenter::ResponsePreviewData, this,&ScanFormWidget::renderPreviewData);
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
mPatInf->setPatientInformation((PatientInformation*)data);
});
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, this, &ScanFormWidget::reloadLanguage);
connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg){
printf("signal:%d\r\n",senderSignalIndex());
setPreviewing(false);
});
} }
void ScanFormWidget::reloadLanguage(){ void ScanFormWidget::reloadLanguage(){

View File

@@ -36,11 +36,13 @@ private:
void initProtocolUI(QHBoxLayout *layout); void initProtocolUI(QHBoxLayout *layout);
void initScanControlBar(QHBoxLayout *layout); void initScanControlBar(QHBoxLayout *layout);
void initScanContent(); void initScanContent();
void reloadLanguage();
void renderLoading(); void renderLoading();
void renderPreviewData(const QObject *data); void renderPreviewData(const QObject *data);
void reloadLanguage();
private slots: private slots:
void protocolChanged(int type); void protocolChanged(int type);
void initEvents();
}; };