+ improve GraphicsScene class
This commit is contained in:
parent
7993938ab6
commit
d43443a832
|
@ -80,6 +80,29 @@ GraphicsView::~GraphicsView()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GraphicsView::viewportEvent(QEvent* event)
|
||||||
|
{
|
||||||
|
if (event->type() == QEvent::Paint || event->type() == QEvent::Resize) {
|
||||||
|
return QGraphicsView::viewportEvent(event);
|
||||||
|
}
|
||||||
|
else if (event->type() == QEvent::MouseMove ||
|
||||||
|
event->type() == QEvent::Wheel ||
|
||||||
|
event->type() == QEvent::MouseButtonDblClick ||
|
||||||
|
event->type() == QEvent::MouseButtonRelease ||
|
||||||
|
event->type() == QEvent::MouseButtonPress) {
|
||||||
|
QMouseEvent* mouse = static_cast<QMouseEvent*>(event);
|
||||||
|
QGraphicsItem *item = itemAt(mouse->pos());
|
||||||
|
if (!item) {
|
||||||
|
QGraphicsView::viewportEvent(event);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QGraphicsView::viewportEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
return QGraphicsView::viewportEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
void GraphicsView::resizeEvent(QResizeEvent *event)
|
void GraphicsView::resizeEvent(QResizeEvent *event)
|
||||||
{
|
{
|
||||||
if (scene())
|
if (scene())
|
||||||
|
@ -350,7 +373,7 @@ GraphicsScene::GraphicsScene()
|
||||||
soeventmanager->setNavigationState(SoEventManager::MIXED_NAVIGATION);
|
soeventmanager->setNavigationState(SoEventManager::MIXED_NAVIGATION);
|
||||||
|
|
||||||
eventfilter = new SceneEventFilter(this);
|
eventfilter = new SceneEventFilter(this);
|
||||||
this->installEventFilter(eventfilter);
|
//this->installEventFilter(eventfilter);
|
||||||
|
|
||||||
connect(this, SIGNAL(sceneRectChanged(const QRectF&)),
|
connect(this, SIGNAL(sceneRectChanged(const QRectF&)),
|
||||||
this, SLOT(onSceneRectChanged(const QRectF&)));
|
this, SLOT(onSceneRectChanged(const QRectF&)));
|
||||||
|
@ -381,8 +404,11 @@ GraphicsScene::getEventFilter(void) const
|
||||||
bool
|
bool
|
||||||
GraphicsScene::processSoEvent(const SoEvent * event)
|
GraphicsScene::processSoEvent(const SoEvent * event)
|
||||||
{
|
{
|
||||||
return event && soeventmanager &&
|
if (event) {
|
||||||
soeventmanager->processEvent(event);
|
return soeventmanager && soeventmanager->processEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -741,6 +767,7 @@ void GraphicsScene::wheelEvent(QGraphicsSceneWheelEvent *event)
|
||||||
GraphicsView3D::GraphicsView3D(Gui::Document* doc, QWidget* parent)
|
GraphicsView3D::GraphicsView3D(Gui::Document* doc, QWidget* parent)
|
||||||
: Gui::MDIView(doc, parent), m_scene(new GraphicsScene()), m_view(new GraphicsView)
|
: Gui::MDIView(doc, parent), m_scene(new GraphicsScene()), m_view(new GraphicsView)
|
||||||
{
|
{
|
||||||
|
m_view->installEventFilter(m_scene->getEventFilter());
|
||||||
QGLFormat f;
|
QGLFormat f;
|
||||||
f.setSampleBuffers(true);
|
f.setSampleBuffers(true);
|
||||||
f.setSamples(8);
|
f.setSamples(8);
|
||||||
|
|
|
@ -137,6 +137,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void resizeEvent(QResizeEvent *event);
|
void resizeEvent(QResizeEvent *event);
|
||||||
|
bool viewportEvent(QEvent* event);
|
||||||
};
|
};
|
||||||
|
|
||||||
class /*GuiExport*/ GraphicsView3D : public Gui::MDIView
|
class /*GuiExport*/ GraphicsView3D : public Gui::MDIView
|
||||||
|
|
Loading…
Reference in New Issue
Block a user