From c12818b49c0cf51e9f0ef4ef985a67976e0a53ad Mon Sep 17 00:00:00 2001 From: Krad Date: Tue, 13 Dec 2022 09:44:04 +0800 Subject: [PATCH] Add ResliceMPRToolBar --- src/src/Rendering/Core/RenderingDefines.h | 3 + .../UI/Widget/ToolBar/ResliceMPRToolBar.cpp | 103 ++++++++++++++++++ src/src/UI/Widget/ToolBar/ResliceMPRToolBar.h | 28 +++++ 3 files changed, 134 insertions(+) create mode 100644 src/src/UI/Widget/ToolBar/ResliceMPRToolBar.cpp create mode 100644 src/src/UI/Widget/ToolBar/ResliceMPRToolBar.h diff --git a/src/src/Rendering/Core/RenderingDefines.h b/src/src/Rendering/Core/RenderingDefines.h index dea1622..243c50b 100644 --- a/src/src/Rendering/Core/RenderingDefines.h +++ b/src/src/Rendering/Core/RenderingDefines.h @@ -14,6 +14,9 @@ #define VTKIS_IMAGE_PAN 5 #define VTKIS_IMAGE_ZOOM 6 #define VTKIS_IMAGE_WINDOWLEVEL 7 +#define VTKIS_IMAGE_SLICE 8 +#define VTKIS_IMAGE_ROTATE3D VTKIS_ROTATE +#define VTKIS_IMAGE_ROTATE2D VTKIS_SPIN #define VTKIS_VOLUME_ROTATE3D VTKIS_ROTATE #define VTKIS_VOLUME_ROTATE2D VTKIS_SPIN #define VTKIS_VOLUME_ZOOM VTKIS_ZOOM diff --git a/src/src/UI/Widget/ToolBar/ResliceMPRToolBar.cpp b/src/src/UI/Widget/ToolBar/ResliceMPRToolBar.cpp new file mode 100644 index 0000000..07660dc --- /dev/null +++ b/src/src/UI/Widget/ToolBar/ResliceMPRToolBar.cpp @@ -0,0 +1,103 @@ +// +// Created by Krad on 2022/12/8. +// + +#include "ResliceMPRToolBar.h" + +#include +#include +#include +#include +#include + +#include "Rendering/Core/RenderingDefines.h" + +ResliceMPRToolBar::ResliceMPRToolBar(QWidget *parent) : QToolBar(parent) { + auto btnReset = new QToolButton(this); + addButton(btnReset, "reset"); + connect(btnReset,&QToolButton::clicked,[=](){ + emit resetView(); + }); + + auto mBtnAnonymize = new QToolButton(this); + addButton(mBtnAnonymize, "anonymize"); + addSeparator(); + auto group = new QButtonGroup(this); + + + auto btnFreeRotate = new QToolButton(this); + addButton(btnFreeRotate, "freeRotate"); + btnFreeRotate->setCheckable(true); + btnFreeRotate->setChecked(true); + btnFreeRotate->setPopupMode(QToolButton::MenuButtonPopup); + btnFreeRotate->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + btnFreeRotate->setToolTip(tr("3D Rotate")); + + auto btnRotate = new QToolButton(this); + addButton(btnRotate, "planeRotate"); + btnRotate->setCheckable(true); + auto btnSlice = new QToolButton(this); + addButton(btnSlice, "slice"); + btnSlice->setCheckable(true); + auto btnPan = new QToolButton(this); + addButton(btnPan, "pan"); + btnPan->setCheckable(true); + auto btnZoom = new QToolButton(this); + addButton(btnZoom, "zoom"); + auto menu = new QMenu(this); + btnZoom->setMenu(menu); + btnZoom->setPopupMode(QToolButton::MenuButtonPopup); + btnZoom->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + btnZoom->setToolTip(tr("Zoom")); + menu->addAction(tr("Fit window"),[=](){ + emit fitWindow(); + }); + + btnZoom->setCheckable(true); + auto btnWindow = new QToolButton(this); + addButton(btnWindow, "window"); + btnWindow->setCheckable(true); + + group->addButton(btnFreeRotate,VTKIS_IMAGE_ROTATE3D); + group->addButton(btnRotate,VTKIS_IMAGE_ROTATE2D); + group->addButton(btnSlice,VTKIS_IMAGE_SLICE); + group->addButton(btnZoom,VTKIS_IMAGE_ZOOM); + group->addButton(btnPan,VTKIS_IMAGE_PAN); + group->addButton(btnWindow,VTKIS_IMAGE_WINDOWLEVEL); + group->setExclusive(true); + + connect(group, static_cast(&QButtonGroup::buttonClicked),this,&ResliceMPRToolBar::modeButtonClicked); + + + addSeparator(); + auto btnSetting = new QToolButton(this); + addButton(btnSetting, "setting"); + + + QWidget *spacer = new QWidget(this); + spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + addWidget(spacer); + + auto mBtnMinimize = new QToolButton(this); + auto mBtnMaximize = new QToolButton(this); + auto mBtnClose = new QToolButton(this); + auto mBtnFullScreen = new QToolButton(this); + auto mActionMinimize = addButton(mBtnMinimize, "minimize"); + auto mActionMaximize = addButton(mBtnMaximize, "maximize"); + auto mActionClose = addButton(mBtnClose, "close"); + auto mActionFullScreen = addButton(mBtnFullScreen, "fullscreen"); + + mActionMinimize->setVisible(false); + mActionMaximize->setVisible(false); + mActionClose->setVisible(false); +} + +ResliceMPRToolBar::~ResliceMPRToolBar() { + +} + +QAction *ResliceMPRToolBar::addButton(QToolButton *button, const char *objectName) { + button->setObjectName(objectName); + button->setToolButtonStyle(Qt::ToolButtonIconOnly); + return addWidget(button); +} diff --git a/src/src/UI/Widget/ToolBar/ResliceMPRToolBar.h b/src/src/UI/Widget/ToolBar/ResliceMPRToolBar.h new file mode 100644 index 0000000..fd0b47d --- /dev/null +++ b/src/src/UI/Widget/ToolBar/ResliceMPRToolBar.h @@ -0,0 +1,28 @@ +// +// Created by Krad on 2022/12/8. +// + +#ifndef OMEGAV_RESLICEMPRTOOLBAR_H +#define OMEGAV_RESLICEMPRTOOLBAR_H + +#include + +class QAction; + +class ResliceMPRToolBar : public QToolBar { + Q_OBJECT +public: + explicit ResliceMPRToolBar(QWidget *parent = nullptr); + + ~ResliceMPRToolBar() override; +signals: + void modeButtonClicked(int id); + void resetView(); + void fitWindow(); + +private: + QAction* addButton(QToolButton* button, const char* objectName); +}; + + +#endif //OMEGAV_RESLICEMPRTOOLBAR_H