feat: add volume measure UI display logic
This commit is contained in:
@@ -284,3 +284,14 @@ QProgressBar::chunk {
|
||||
ConfigurationDialog#PacsConfigurationDialog{
|
||||
border:1px solid #5a5a5a;
|
||||
}
|
||||
|
||||
|
||||
QLabel#VolumeMeasure{
|
||||
color: white;
|
||||
margin-left: 3px;
|
||||
margin-right: 3px;
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
margin-top: 3px;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "DefaultToolBar.h"
|
||||
|
||||
#include <QToolButton>
|
||||
#include <QLabel>
|
||||
#include <QMenu>
|
||||
#include <QButtonGroup>
|
||||
#include <QActionGroup>
|
||||
@@ -45,6 +46,7 @@ DefaultToolBar::DefaultToolBar(QWidget *parent) : QToolBar(parent)
|
||||
, mBtnPan(new QToolButton(this))
|
||||
, mBtnZoom(new QToolButton(this))
|
||||
, mBtnMeasure(new QToolButton(this))
|
||||
, mLblMeasure(new QLabel(this))
|
||||
, mBtnClear(new QToolButton(this))
|
||||
, mBtnFlip(new QToolButton(this))
|
||||
, mBtnCine(new QToolButton(this))
|
||||
@@ -60,6 +62,11 @@ DefaultToolBar::DefaultToolBar(QWidget *parent) : QToolBar(parent)
|
||||
, mActionMaximize(nullptr)
|
||||
, mActionClose(nullptr)
|
||||
, mActionFullScreen(nullptr)
|
||||
, mActionHideAnnotations(nullptr)
|
||||
, mActionHideReferenceLine(nullptr)
|
||||
, mActionHideMeasure(nullptr)
|
||||
, mActionHidePatData(nullptr)
|
||||
, mActionVolumeDetail(nullptr)
|
||||
{
|
||||
//init icons
|
||||
mManualIcon.addFile(SYNC_MANUAL_URL);
|
||||
@@ -87,7 +94,15 @@ void DefaultToolBar::changePseudoColor(bool on)
|
||||
|
||||
void DefaultToolBar::resetToolbarMode(bool aHasSeries)
|
||||
{
|
||||
if (aHasSeries)mBtnSlice->click();
|
||||
if (aHasSeries){
|
||||
|
||||
mActionVolumeDetail->setVisible(false);
|
||||
QPixmap map(std::get<0>(MEASURE_ACTIIONS[0]));
|
||||
mBtnMeasure->setIcon(QIcon(map));
|
||||
MeasureHelper::setMeasureType(std::get<1>(MEASURE_ACTIIONS[0]));
|
||||
mBtnSlice->click();
|
||||
mBtnSlice->setChecked(true);
|
||||
}
|
||||
}
|
||||
|
||||
QAction* DefaultToolBar::addButton(QToolButton* button, const char* objectName) {
|
||||
@@ -191,6 +206,9 @@ void DefaultToolBar::initToolBarButtons() {
|
||||
icon.addFile(":/InfiniteViewer/Icon/distanced.png", QSize(), QIcon::Disabled);
|
||||
mBtnMeasure->setIcon(icon);
|
||||
}
|
||||
mActionVolumeDetail = addWidget(mLblMeasure);
|
||||
mLblMeasure->setObjectName("VolumeMeasure");
|
||||
mActionVolumeDetail->setVisible(false);
|
||||
|
||||
auto actionClear= addButton(mBtnClear, "clear");
|
||||
mBtnClear->setEnabled(false);
|
||||
@@ -471,11 +489,13 @@ void DefaultToolBar::initMeasureButton() {
|
||||
|
||||
mBtnMeasure->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||
mBtnMeasure->setToolTip(tr("Measuring tool"));
|
||||
mBtnMeasure->setProperty("mode",36);
|
||||
|
||||
connect(mBtnMeasure, &QToolButton::clicked, [=](){
|
||||
if (mBtnMeasure->property("mode").toInt() == 38)
|
||||
int mode = mBtnMeasure->property("mode").toInt();
|
||||
if (mode != 36)
|
||||
{
|
||||
emit modeChanged(38);
|
||||
emit modeChanged(mode);
|
||||
}
|
||||
else{
|
||||
emit modeChanged(36);
|
||||
@@ -493,7 +513,8 @@ void DefaultToolBar::initMeasureButton() {
|
||||
mBtnMeasure->setIcon(QIcon(map));
|
||||
emit modeChanged(36);
|
||||
MeasureHelper::setMeasureType(std::get<1>(MEASURE_ACTIIONS[j]));
|
||||
mBtnMeasure->setProperty("mode",0);
|
||||
mBtnMeasure->setProperty("mode",36);
|
||||
mActionVolumeDetail->setVisible(false);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -504,6 +525,13 @@ void DefaultToolBar::initMeasureButton() {
|
||||
mBtnMeasure->setProperty("mode",38);
|
||||
emit modeChanged(38);
|
||||
});
|
||||
m->addAction(tr("Volume Measure"), this,[=](){
|
||||
mBtnMeasure->setChecked(true);
|
||||
QPixmap map(":/InfiniteViewer/Icon/volmeasure.png");
|
||||
mBtnMeasure->setIcon(QIcon(map));
|
||||
mBtnMeasure->setProperty("mode",39);
|
||||
emit modeChanged(39);
|
||||
});
|
||||
m->addSeparator();
|
||||
ADD_DEL_ACTION(tr("Delete selected"), AnnotationDeleteType::DeleteSelectedAnn);
|
||||
ADD_DEL_ACTION(tr("Delete all in current slice"), AnnotationDeleteType::DeleteSliceAnn);
|
||||
@@ -511,9 +539,59 @@ void DefaultToolBar::initMeasureButton() {
|
||||
mBtnMeasure->setPopupMode(QToolButton::MenuButtonPopup);
|
||||
mBtnMeasure->setMenu(m);
|
||||
|
||||
connect(EventsCenter::Default(), &EventsCenter::VolumeMeasured, this, &DefaultToolBar::volumeMeasured, Qt::QueuedConnection);
|
||||
|
||||
}
|
||||
|
||||
void DefaultToolBar::volumeMeasured(EventObject* aEventDetail)
|
||||
{
|
||||
auto map = aEventDetail->Detail;
|
||||
if (!map.contains("dis1"))
|
||||
{
|
||||
mLblMeasure->setText("");
|
||||
mActionVolumeDetail->setVisible(false);
|
||||
return;
|
||||
}
|
||||
QString cm = tr("cm");
|
||||
QString mm = tr("mm");
|
||||
QString cm3= tr("cm³");
|
||||
QString mm3 = tr("mm³");
|
||||
QString Distance1Name = tr("Distance1");
|
||||
QString Distance2Name = tr("Distance2");
|
||||
QString Distance3Name= tr("Distance3");
|
||||
QString VolumeName = tr("Volume");
|
||||
|
||||
double dis1 = map.contains("dis1")?map["dis1"].toDouble():0.0;
|
||||
QString unit1 = dis1>100?cm:mm;
|
||||
dis1 = dis1>100.0?(dis1/10):(dis1);
|
||||
double dis2 = map.contains("dis2")?map["dis2"].toDouble():0.0;
|
||||
QString unit2 = dis2>100?cm:mm;
|
||||
dis2 = dis2>100.0?(dis2/10):(dis2);
|
||||
double dis3 = map.contains("dis3")?map["dis3"].toDouble():0.0;
|
||||
QString unit3 = dis3>100?cm:mm;
|
||||
dis3 = dis3>100.0?(dis3/10):(dis3);
|
||||
double volume = map.contains("Volume")?map["Volume"].toDouble():0.0;
|
||||
QString unit4 = volume>10000?cm3:mm3;
|
||||
volume = volume>10000.0?(volume/1000):(volume);
|
||||
|
||||
QString message = QString("%1: %2 %3, %4: %5 %6\n%7: %8 %9, %11: %12 %13")
|
||||
.arg(Distance1Name)
|
||||
.arg(dis1,0,'f',2)
|
||||
.arg(unit1)
|
||||
.arg(Distance2Name)
|
||||
.arg(dis2,0,'f',2)
|
||||
.arg(unit2)
|
||||
.arg(Distance3Name)
|
||||
.arg(dis3,0,'f',2)
|
||||
.arg(unit3)
|
||||
.arg(VolumeName)
|
||||
.arg(volume,0,'f',2)
|
||||
.arg(unit4);
|
||||
mLblMeasure->setText(message);
|
||||
mActionVolumeDetail->setVisible(true);
|
||||
delete aEventDetail;
|
||||
}
|
||||
|
||||
void DefaultToolBar::initFusionButton() {
|
||||
mBtnFusion->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||
mBtnFusion->setToolTip(tr("Fusion"));
|
||||
@@ -610,8 +688,6 @@ void DefaultToolBar::resetNeedCheckFunctionButtons(){
|
||||
break;
|
||||
}
|
||||
}
|
||||
// SyncHelper::setSyncState(DIS_SYNC);
|
||||
// syncStateChanged();
|
||||
}
|
||||
|
||||
void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state)
|
||||
@@ -662,8 +738,6 @@ void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state)
|
||||
}
|
||||
mBtnFusion->setEnabled(state.canFusion);
|
||||
}
|
||||
// SyncHelper::setSyncState((SyncState)state.canSync);
|
||||
// syncStateChanged();
|
||||
}
|
||||
|
||||
void DefaultToolBar::initScreenButtons() {
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "UI/Manager/ImageViewStateCheckWorker.h"
|
||||
|
||||
class QButtonGroup;
|
||||
class QLabel;
|
||||
class ExportToolButton;
|
||||
|
||||
class DefaultToolBar : public QToolBar {
|
||||
@@ -50,6 +51,7 @@ private:
|
||||
|
||||
void initToolBarButtons();
|
||||
void syncStateChanged() const;
|
||||
void volumeMeasured(EventObject* aEventDetail);
|
||||
|
||||
void initFileButton();
|
||||
void initImportButton();
|
||||
@@ -82,6 +84,7 @@ private:
|
||||
QToolButton *mBtnPan;
|
||||
QToolButton *mBtnZoom;
|
||||
QToolButton *mBtnMeasure;
|
||||
QLabel* mLblMeasure;
|
||||
QToolButton *mBtnClear;
|
||||
QToolButton *mBtnFlip;
|
||||
QToolButton *mBtnCine;
|
||||
@@ -101,6 +104,7 @@ private:
|
||||
QAction *mActionHideReferenceLine;
|
||||
QAction *mActionHideMeasure;
|
||||
QAction *mActionHidePatData;
|
||||
QAction *mActionVolumeDetail;
|
||||
QAction* mSyncActions[3]={nullptr,nullptr,nullptr};
|
||||
QAction* mMPRActions[3]={nullptr,nullptr,nullptr};
|
||||
QActionGroup *mPseudocolorGroup;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user