Change UI logic, add message prompt, add scan logic and preivewing rendering logic.

This commit is contained in:
Krad
2021-10-14 14:39:52 +08:00
parent fca70376cc
commit 533c15d57c
5 changed files with 133 additions and 44 deletions

View File

@@ -11,13 +11,16 @@
#include "patientinformationform.h"
#include <QButtonGroup>
#include "event/EventCenter.h"
#include <QImage>
#include <QPainter>
ScanFormWidget::ScanFormWidget(QWidget *parent) : TabFormWidget(parent) {
const char* style="QWidget#PatientInformationForm{min-width:300px;max-width:300px; margin-right:10}"
"QWidget#patientinformation_panel{ border-right:1px solid #0078d8}"
"QWidget#patientinformation_panel QLabel{font-size:20px; }"
"QWidget#param_widget{min-width:300px;max-width:300px;border-left:1px solid #0078d8}"
"QWidget#broadcast_widget{border:2px solid #515151; border-radius: 20px}"
"QWidget#broadcast_widget{border:2px solid #515151; border-radius: 20px; background-color:black}"
"QWidget#broadcast_widget QLabel{background-color:black}"
"QLabel#lbl_protocol{font-size:32px; margin:0; color:silver}"
"QLabel#lbl_title,QLabel#lbl_ptitle{font-size:20px;margin:0; border-bottom:1px solid silver}"
"QLabel#lbl_end{font-size:20px;margin:0; border-top:1px solid #0078d8}"
@@ -123,17 +126,57 @@ ScanFormWidget::ScanFormWidget(QWidget *parent) : TabFormWidget(parent) {
connect(EventCenter::Default(),&EventCenter::ResponsePreview,[=](QObject* sender,QObject* data){
setPreviewing(true);
});
connect(EventCenter::Default(),&EventCenter::ResponsePreviewData,[=](QObject* sender,QObject* data){
if (!data)return;
QByteArray* array = (QByteArray*)data;
uchar* raw_dataptr = (uchar*)array->data();
uchar c_data[200][200];
uchar* data_ptr = c_data[0];
for(int i=0;i<200;i++){
data_ptr = c_data[i];
memcpy(data_ptr,raw_dataptr,200);
raw_dataptr += 200;
}
raw_dataptr = (uchar*)array->data();
QImage img(c_data[0] , 200, 200, QImage::Format_Grayscale8);
viewer->setFixedSize(800,800);
QPixmap pic = QPixmap::fromImage(img).scaledToHeight(800,Qt::SmoothTransformation);
QPainter painter(&pic);
QPen pen;
pen.setColor(QColor(255,255,0,100));
pen.setStyle(Qt::DashLine);
pen.setWidth(3);
QFont font("Futura");
font.setPixelSize(26);
font.setBold(true);
painter.setFont(font);
painter.setPen(pen);
painter.drawLine(29*4,29*4,29*4,171*4);
painter.drawLine(29*4+1,29*4,171*4,29*4);
painter.drawLine(29*4+1,171*4,171*4,171*4);
painter.drawLine(171*4,29*4+1,171*4,171*4-1);
pen.setColor(QColor(255,255,0));
painter.setPen(pen);
painter.drawText(335,80,"Previewing");
painter.drawText(29*4,29*4-2,"ROI");
viewer->setPixmap(pic);
});
connect(EventCenter::Default(),&EventCenter::PatientSelected,[=](QObject* sender,QObject* data){
patient_information->setPatientInformation((PatientInformation*)data);
});
connect(btnRefresh,&QToolButton::clicked,[=](){
EventCenter::Default()->triggerEvent(GUIEvents::RequestEmptyScan, nullptr, nullptr);
QString patientInf(patient_information->getCurrentPatientJsonString(true));
printf("%s\r\n",patientInf.toStdString().data());
EventCenter::Default()->triggerEvent(GUIEvents::RequestEmptyScan, nullptr, (QObject*)(&patientInf));
});
connect(btnPreview,&QToolButton::clicked,[=](){
EventCenter::Default()->triggerEvent(GUIEvents::RequestPreviewScan, nullptr, nullptr);
});
connect(btnScan,&QToolButton::clicked,[=](){
EventCenter::Default()->triggerEvent(GUIEvents::RequestPatientScan, nullptr, nullptr);
QString patientInf(patient_information->getCurrentPatientJsonString(false));
printf("%s\r\n",patientInf.toStdString().data());
EventCenter::Default()->triggerEvent(GUIEvents::RequestPatientScan, nullptr, (QObject*)(&patientInf));
});
connect(btnStop,&QToolButton::clicked,[=](){
EventCenter::Default()->triggerEvent(GUIEvents::RequestStop, nullptr, nullptr);