35 #include <QResizeEvent>
36 #include "vtkRenderWindow.h"
37 #include "vtkRenderer.h"
38 #include <QGridLayout>
48 QVTKWidget(parent, f),
49 mMouseEventTarget(NULL)
51 this->setContextMenuPolicy(Qt::CustomContextMenu);
52 connect(
this, SIGNAL(customContextMenuRequested(
const QPoint &)),
this, SLOT(customContextMenuRequestedSlot(
const QPoint &)));
55 this->setLayout(
new QGridLayout);
83 return (QGridLayout*) layout();
86 void ViewContainer::paintEvent(QPaintEvent* event)
88 inherited_widget::paintEvent(event);
115 this->initializeRenderWindow();
128 void ViewContainer::initializeRenderWindow()
137 this->addBackgroundRenderer();
140 void ViewContainer::addBackgroundRenderer()
144 renderer->SetViewport(0,0,1,1);
145 QColor background = palette().color(QPalette::Background);
146 renderer->SetBackground(background.redF(), background.greenF(), background.blueF());
149 void ViewContainer::customContextMenuRequestedSlot(
const QPoint& point)
151 ViewItem* item = this->findViewItem(point);
155 QWidget* sender =
dynamic_cast<QWidget*
>(this->sender());
156 QPoint pointGlobal = sender->mapToGlobal(point);
158 item->customContextMenuRequestedGlobalSlot(pointGlobal);
161 void ViewContainer::mouseMoveEvent(QMouseEvent* event)
163 inherited_widget::mouseMoveEvent(event);
172 void ViewContainer::mousePressEvent(QMouseEvent* event)
178 if ((this->contextMenuPolicy() == Qt::CustomContextMenu) && event->buttons().testFlag(Qt::RightButton))
181 inherited_widget::mousePressEvent(event);
191 QPoint ViewContainer::convertToItemSpace(
const QPoint &pos, ViewItem* item)
const
193 QRect r = item->geometry();
194 QPoint retval(pos.x() - r.left(), pos.y() - r.top());
198 ViewItem* ViewContainer::findViewItem(
const QPoint &pos)
203 QRect r = item->geometry();
210 void ViewContainer::mouseReleaseEvent(QMouseEvent* event)
212 inherited_widget::mouseReleaseEvent(event);
222 void ViewContainer::focusInEvent(QFocusEvent* event)
224 inherited_widget::focusInEvent(event);
227 void ViewContainer::wheelEvent(QWheelEvent* event)
229 inherited_widget::wheelEvent(event);
231 ViewItem *item = this->findViewItem(event->pos());
234 QPoint p = this->convertToItemSpace(event->pos(), item);
235 item->mouseWheelSlot(p.x(), p.y(),
236 event->delta(),
event->orientation(),
event->buttons());
240 void ViewContainer::showEvent(QShowEvent* event)
242 inherited_widget::showEvent(event);
252 hash += item->
getView()->computeTotalMTime();
260 QString msg(
"During rendering of ViewContainer");
270 void ViewContainer::resizeEvent( QResizeEvent *event)
272 inherited_widget::resizeEvent(event);
cstring_cast_Placeholder cstring_cast(const T &val)
LayoutPosition span
size of region
void mouseReleaseSlot(int x, int y, Qt::MouseButtons buttons)
#define report_gl_error_text(text)
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