feat: add volume measure UI display logic
This commit is contained in:
@@ -284,3 +284,14 @@ QProgressBar::chunk {
|
|||||||
ConfigurationDialog#PacsConfigurationDialog{
|
ConfigurationDialog#PacsConfigurationDialog{
|
||||||
border:1px solid #5a5a5a;
|
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 "DefaultToolBar.h"
|
||||||
|
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
|
#include <QLabel>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QButtonGroup>
|
#include <QButtonGroup>
|
||||||
#include <QActionGroup>
|
#include <QActionGroup>
|
||||||
@@ -45,6 +46,7 @@ DefaultToolBar::DefaultToolBar(QWidget *parent) : QToolBar(parent)
|
|||||||
, mBtnPan(new QToolButton(this))
|
, mBtnPan(new QToolButton(this))
|
||||||
, mBtnZoom(new QToolButton(this))
|
, mBtnZoom(new QToolButton(this))
|
||||||
, mBtnMeasure(new QToolButton(this))
|
, mBtnMeasure(new QToolButton(this))
|
||||||
|
, mLblMeasure(new QLabel(this))
|
||||||
, mBtnClear(new QToolButton(this))
|
, mBtnClear(new QToolButton(this))
|
||||||
, mBtnFlip(new QToolButton(this))
|
, mBtnFlip(new QToolButton(this))
|
||||||
, mBtnCine(new QToolButton(this))
|
, mBtnCine(new QToolButton(this))
|
||||||
@@ -60,6 +62,11 @@ DefaultToolBar::DefaultToolBar(QWidget *parent) : QToolBar(parent)
|
|||||||
, mActionMaximize(nullptr)
|
, mActionMaximize(nullptr)
|
||||||
, mActionClose(nullptr)
|
, mActionClose(nullptr)
|
||||||
, mActionFullScreen(nullptr)
|
, mActionFullScreen(nullptr)
|
||||||
|
, mActionHideAnnotations(nullptr)
|
||||||
|
, mActionHideReferenceLine(nullptr)
|
||||||
|
, mActionHideMeasure(nullptr)
|
||||||
|
, mActionHidePatData(nullptr)
|
||||||
|
, mActionVolumeDetail(nullptr)
|
||||||
{
|
{
|
||||||
//init icons
|
//init icons
|
||||||
mManualIcon.addFile(SYNC_MANUAL_URL);
|
mManualIcon.addFile(SYNC_MANUAL_URL);
|
||||||
@@ -87,7 +94,15 @@ void DefaultToolBar::changePseudoColor(bool on)
|
|||||||
|
|
||||||
void DefaultToolBar::resetToolbarMode(bool aHasSeries)
|
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) {
|
QAction* DefaultToolBar::addButton(QToolButton* button, const char* objectName) {
|
||||||
@@ -191,6 +206,9 @@ void DefaultToolBar::initToolBarButtons() {
|
|||||||
icon.addFile(":/InfiniteViewer/Icon/distanced.png", QSize(), QIcon::Disabled);
|
icon.addFile(":/InfiniteViewer/Icon/distanced.png", QSize(), QIcon::Disabled);
|
||||||
mBtnMeasure->setIcon(icon);
|
mBtnMeasure->setIcon(icon);
|
||||||
}
|
}
|
||||||
|
mActionVolumeDetail = addWidget(mLblMeasure);
|
||||||
|
mLblMeasure->setObjectName("VolumeMeasure");
|
||||||
|
mActionVolumeDetail->setVisible(false);
|
||||||
|
|
||||||
auto actionClear= addButton(mBtnClear, "clear");
|
auto actionClear= addButton(mBtnClear, "clear");
|
||||||
mBtnClear->setEnabled(false);
|
mBtnClear->setEnabled(false);
|
||||||
@@ -471,11 +489,13 @@ void DefaultToolBar::initMeasureButton() {
|
|||||||
|
|
||||||
mBtnMeasure->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
mBtnMeasure->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
mBtnMeasure->setToolTip(tr("Measuring tool"));
|
mBtnMeasure->setToolTip(tr("Measuring tool"));
|
||||||
|
mBtnMeasure->setProperty("mode",36);
|
||||||
|
|
||||||
connect(mBtnMeasure, &QToolButton::clicked, [=](){
|
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{
|
else{
|
||||||
emit modeChanged(36);
|
emit modeChanged(36);
|
||||||
@@ -493,7 +513,8 @@ void DefaultToolBar::initMeasureButton() {
|
|||||||
mBtnMeasure->setIcon(QIcon(map));
|
mBtnMeasure->setIcon(QIcon(map));
|
||||||
emit modeChanged(36);
|
emit modeChanged(36);
|
||||||
MeasureHelper::setMeasureType(std::get<1>(MEASURE_ACTIIONS[j]));
|
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);
|
mBtnMeasure->setProperty("mode",38);
|
||||||
emit modeChanged(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();
|
m->addSeparator();
|
||||||
ADD_DEL_ACTION(tr("Delete selected"), AnnotationDeleteType::DeleteSelectedAnn);
|
ADD_DEL_ACTION(tr("Delete selected"), AnnotationDeleteType::DeleteSelectedAnn);
|
||||||
ADD_DEL_ACTION(tr("Delete all in current slice"), AnnotationDeleteType::DeleteSliceAnn);
|
ADD_DEL_ACTION(tr("Delete all in current slice"), AnnotationDeleteType::DeleteSliceAnn);
|
||||||
@@ -511,9 +539,59 @@ void DefaultToolBar::initMeasureButton() {
|
|||||||
mBtnMeasure->setPopupMode(QToolButton::MenuButtonPopup);
|
mBtnMeasure->setPopupMode(QToolButton::MenuButtonPopup);
|
||||||
mBtnMeasure->setMenu(m);
|
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() {
|
void DefaultToolBar::initFusionButton() {
|
||||||
mBtnFusion->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
mBtnFusion->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
mBtnFusion->setToolTip(tr("Fusion"));
|
mBtnFusion->setToolTip(tr("Fusion"));
|
||||||
@@ -610,8 +688,6 @@ void DefaultToolBar::resetNeedCheckFunctionButtons(){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// SyncHelper::setSyncState(DIS_SYNC);
|
|
||||||
// syncStateChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state)
|
void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state)
|
||||||
@@ -662,8 +738,6 @@ void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state)
|
|||||||
}
|
}
|
||||||
mBtnFusion->setEnabled(state.canFusion);
|
mBtnFusion->setEnabled(state.canFusion);
|
||||||
}
|
}
|
||||||
// SyncHelper::setSyncState((SyncState)state.canSync);
|
|
||||||
// syncStateChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefaultToolBar::initScreenButtons() {
|
void DefaultToolBar::initScreenButtons() {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "UI/Manager/ImageViewStateCheckWorker.h"
|
#include "UI/Manager/ImageViewStateCheckWorker.h"
|
||||||
|
|
||||||
class QButtonGroup;
|
class QButtonGroup;
|
||||||
|
class QLabel;
|
||||||
class ExportToolButton;
|
class ExportToolButton;
|
||||||
|
|
||||||
class DefaultToolBar : public QToolBar {
|
class DefaultToolBar : public QToolBar {
|
||||||
@@ -50,6 +51,7 @@ private:
|
|||||||
|
|
||||||
void initToolBarButtons();
|
void initToolBarButtons();
|
||||||
void syncStateChanged() const;
|
void syncStateChanged() const;
|
||||||
|
void volumeMeasured(EventObject* aEventDetail);
|
||||||
|
|
||||||
void initFileButton();
|
void initFileButton();
|
||||||
void initImportButton();
|
void initImportButton();
|
||||||
@@ -82,6 +84,7 @@ private:
|
|||||||
QToolButton *mBtnPan;
|
QToolButton *mBtnPan;
|
||||||
QToolButton *mBtnZoom;
|
QToolButton *mBtnZoom;
|
||||||
QToolButton *mBtnMeasure;
|
QToolButton *mBtnMeasure;
|
||||||
|
QLabel* mLblMeasure;
|
||||||
QToolButton *mBtnClear;
|
QToolButton *mBtnClear;
|
||||||
QToolButton *mBtnFlip;
|
QToolButton *mBtnFlip;
|
||||||
QToolButton *mBtnCine;
|
QToolButton *mBtnCine;
|
||||||
@@ -101,6 +104,7 @@ private:
|
|||||||
QAction *mActionHideReferenceLine;
|
QAction *mActionHideReferenceLine;
|
||||||
QAction *mActionHideMeasure;
|
QAction *mActionHideMeasure;
|
||||||
QAction *mActionHidePatData;
|
QAction *mActionHidePatData;
|
||||||
|
QAction *mActionVolumeDetail;
|
||||||
QAction* mSyncActions[3]={nullptr,nullptr,nullptr};
|
QAction* mSyncActions[3]={nullptr,nullptr,nullptr};
|
||||||
QAction* mMPRActions[3]={nullptr,nullptr,nullptr};
|
QAction* mMPRActions[3]={nullptr,nullptr,nullptr};
|
||||||
QActionGroup *mPseudocolorGroup;
|
QActionGroup *mPseudocolorGroup;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user