You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.7 KiB
C++
105 lines
2.7 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
/**
|
|
* @class vtkQWidgetWidget
|
|
* @brief 3D VTK widget for a QWidget
|
|
*
|
|
* This 3D widget handles events between VTK and Qt for a QWidget placed
|
|
* in a scene. It currently takes 6dof events as from VR controllers and
|
|
* if they intersect the widghet it converts them to Qt events and fires
|
|
* them off.
|
|
*/
|
|
|
|
#ifndef vtkQWidgetWidget_h
|
|
#define vtkQWidgetWidget_h
|
|
|
|
#include "vtkAbstractWidget.h"
|
|
#include "vtkGUISupportQtModule.h" // For export macro
|
|
#include <QPointF> // for ivar
|
|
|
|
class QWidget;
|
|
class vtkQWidgetRepresentation;
|
|
|
|
class VTKGUISUPPORTQT_EXPORT vtkQWidgetWidget : public vtkAbstractWidget
|
|
{
|
|
friend class vtkInteractionCallback;
|
|
|
|
public:
|
|
/**
|
|
* Instantiate the object.
|
|
*/
|
|
static vtkQWidgetWidget* New();
|
|
|
|
//@{
|
|
/**
|
|
* Standard vtkObject methods
|
|
*/
|
|
vtkTypeMacro(vtkQWidgetWidget, vtkAbstractWidget);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
//@}
|
|
|
|
/**
|
|
* Specify an instance of vtkQWidgetRepresentation used to represent this
|
|
* widget in the scene. Note that the representation is a subclass of vtkProp
|
|
* so it can be added to the renderer independent of the widget.
|
|
*/
|
|
void SetRepresentation(vtkQWidgetRepresentation* rep);
|
|
|
|
// Description:
|
|
// Disable/Enable the widget if needed.
|
|
// Unobserved the camera if the widget is disabled.
|
|
void SetEnabled(int enabling) override;
|
|
|
|
/**
|
|
* Return the representation as a vtkQWidgetRepresentation
|
|
*/
|
|
vtkQWidgetRepresentation* GetQWidgetRepresentation();
|
|
|
|
/**
|
|
* Create the default widget representation if one is not set.
|
|
*/
|
|
void CreateDefaultRepresentation() override;
|
|
|
|
/**
|
|
* Set the QWidget that will receive the events.
|
|
*/
|
|
void SetWidget(QWidget* w);
|
|
|
|
protected:
|
|
vtkQWidgetWidget();
|
|
~vtkQWidgetWidget() override;
|
|
|
|
// Manage the state of the widget
|
|
int WidgetState;
|
|
enum _WidgetState
|
|
{
|
|
Start = 0,
|
|
Active
|
|
};
|
|
|
|
QWidget* Widget;
|
|
QPointF LastWidgetCoordinates;
|
|
|
|
// These methods handle events
|
|
static void SelectAction3D(vtkAbstractWidget*);
|
|
static void EndSelectAction3D(vtkAbstractWidget*);
|
|
static void MoveAction3D(vtkAbstractWidget*);
|
|
|
|
private:
|
|
vtkQWidgetWidget(const vtkQWidgetWidget&) = delete;
|
|
void operator=(const vtkQWidgetWidget&) = delete;
|
|
};
|
|
|
|
#endif
|