Add ResliceMPRToolBar

This commit is contained in:
Krad
2022-12-13 09:44:04 +08:00
parent 1ca3c95cae
commit c12818b49c
3 changed files with 134 additions and 0 deletions

View File

@@ -14,6 +14,9 @@
#define VTKIS_IMAGE_PAN 5 #define VTKIS_IMAGE_PAN 5
#define VTKIS_IMAGE_ZOOM 6 #define VTKIS_IMAGE_ZOOM 6
#define VTKIS_IMAGE_WINDOWLEVEL 7 #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_ROTATE3D VTKIS_ROTATE
#define VTKIS_VOLUME_ROTATE2D VTKIS_SPIN #define VTKIS_VOLUME_ROTATE2D VTKIS_SPIN
#define VTKIS_VOLUME_ZOOM VTKIS_ZOOM #define VTKIS_VOLUME_ZOOM VTKIS_ZOOM

View File

@@ -0,0 +1,103 @@
//
// Created by Krad on 2022/12/8.
//
#include "ResliceMPRToolBar.h"
#include <QToolButton>
#include <QButtonGroup>
#include <QActionGroup>
#include <QMenu>
#include <tuple>
#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<void(QButtonGroup::*)(int)>(&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);
}

View File

@@ -0,0 +1,28 @@
//
// Created by Krad on 2022/12/8.
//
#ifndef OMEGAV_RESLICEMPRTOOLBAR_H
#define OMEGAV_RESLICEMPRTOOLBAR_H
#include <QToolBar>
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