35 #include <QResizeEvent>
36 #include "vtkRenderWindow.h"
37 #include "vtkRenderer.h"
38 #include <QGridLayout>
46 QVTKWidget(parent, f),
47 mMouseEventTarget(NULL)
49 this->setContextMenuPolicy(Qt::CustomContextMenu);
50 connect(
this, SIGNAL(customContextMenuRequested(
const QPoint &)),
this, SLOT(customContextMenuRequestedSlot(
const QPoint &)));
53 this->setLayout(
new QGridLayout);
81 return (QGridLayout*) layout();
84 void ViewContainer::paintEvent(QPaintEvent* event)
86 inherited_widget::paintEvent(event);
113 this->initializeRenderWindow();
126 void ViewContainer::initializeRenderWindow()
135 this->addBackgroundRenderer();
138 void ViewContainer::addBackgroundRenderer()
142 renderer->SetViewport(0,0,1,1);
143 QColor background = palette().color(QPalette::Background);
144 renderer->SetBackground(background.redF(), background.greenF(), background.blueF());
147 void ViewContainer::customContextMenuRequestedSlot(
const QPoint& point)
149 ViewItem* item = this->findViewItem(point);
153 QWidget* sender =
dynamic_cast<QWidget*
>(this->sender());
154 QPoint pointGlobal = sender->mapToGlobal(point);
156 item->customContextMenuRequestedGlobalSlot(pointGlobal);
159 void ViewContainer::mouseMoveEvent(QMouseEvent* event)
161 inherited_widget::mouseMoveEvent(event);
170 void ViewContainer::mousePressEvent(QMouseEvent* event)
176 if ((this->contextMenuPolicy() == Qt::CustomContextMenu) && event->buttons().testFlag(Qt::RightButton))
179 inherited_widget::mousePressEvent(event);
189 QPoint ViewContainer::convertToItemSpace(
const QPoint &pos, ViewItem* item)
const
191 QRect r = item->geometry();
192 QPoint retval(pos.x() - r.left(), pos.y() - r.top());
196 ViewItem* ViewContainer::findViewItem(
const QPoint &pos)
201 QRect r = item->geometry();
208 void ViewContainer::mouseReleaseEvent(QMouseEvent* event)
210 inherited_widget::mouseReleaseEvent(event);
220 void ViewContainer::focusInEvent(QFocusEvent* event)
222 inherited_widget::focusInEvent(event);
225 void ViewContainer::wheelEvent(QWheelEvent* event)
227 inherited_widget::wheelEvent(event);
229 ViewItem *item = this->findViewItem(event->pos());
232 QPoint p = this->convertToItemSpace(event->pos(), item);
233 item->mouseWheelSlot(p.x(), p.y(),
234 event->delta(),
event->orientation(),
event->buttons());
238 void ViewContainer::showEvent(QShowEvent* event)
240 inherited_widget::showEvent(event);
250 hash += item->
getView()->computeTotalMTime();
265 void ViewContainer::resizeEvent( QResizeEvent *event)
267 inherited_widget::resizeEvent(event);
LayoutPosition span
size of region
void mouseReleaseSlot(int x, int y, Qt::MouseButtons buttons)
ViewContainer(QWidget *parent=NULL, Qt::WindowFlags f=0)
ViewItem * addView(QString uid, LayoutRegion region, QString name="")
void mousePressSlot(int x, int y, Qt::MouseButtons buttons)
vtkSmartPointer< class vtkRenderer > vtkRendererPtr
ViewItem * getViewItem(int index)
vtkRenderWindowPtr getRenderWindow()
unsigned long mMTimeHash
sum of all MTimes in objects rendered
void mouseMoveSlot(int x, int y, Qt::MouseButtons buttons)
void setStretchFactors(QGridLayout *layout, LayoutRegion region, int stretchFactor)
virtual void setModified()
void renderAll()
Use this function to render all views at once. Do not call render on each view.
LayoutPosition pos
start position of region
virtual QGridLayout * getGridLayout()
ViewRepCollectionPtr getView()
vtkRenderWindowPtr mRenderWindow
ViewItem * mMouseEventTarget