diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2016-04-25 13:47:15 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-04-28 07:50:44 +0000 |
commit | 1b65fbd858db8d81aa6847669b7d98cf3038550b (patch) | |
tree | aca1e1606e2251925664b9aca1f00723d364d0c0 /src/quick3d | |
parent | 135ad25792c8c903e2fc1c69109f0b1d5761d2ae (diff) |
Scene3DItem: add the hoverEnabled property
If set to true, the item will receive HoverEvents that will be transmitted as
positionChanged events to MouseHandlers in the scene. For most cases this would
result in high traffic for events that aren't handled. If hoverEnabled is set
to true, then that processing will take place, otherwise it won't (unless you
are pressing a mouse button). The default is hoverEnabled set to false.
Change-Id: I8fc2d519ee902349ace8f4e130cd12f3018c01af
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick3d')
-rw-r--r-- | src/quick3d/imports/scene3d/scene3ditem.cpp | 15 | ||||
-rw-r--r-- | src/quick3d/imports/scene3d/scene3ditem_p.h | 4 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/quick3d/imports/scene3d/scene3ditem.cpp b/src/quick3d/imports/scene3d/scene3ditem.cpp index c29a4f4d6..317a858e0 100644 --- a/src/quick3d/imports/scene3d/scene3ditem.cpp +++ b/src/quick3d/imports/scene3d/scene3ditem.cpp @@ -83,8 +83,6 @@ Scene3DItem::Scene3DItem(QQuickItem *parent) { setFlag(QQuickItem::ItemHasContents, true); setAcceptedMouseButtons(Qt::MouseButtonMask); - setAcceptHoverEvents(true); - // TO DO: register the event source in the main thread m_aspectEngine->registerAspect(m_renderAspect); @@ -150,6 +148,14 @@ void Scene3DItem::setCameraAspectRatioMode(CameraAspectRatioMode mode) emit cameraAspectRatioModeChanged(mode); } +void Scene3DItem::setHoverEnabled(bool enabled) +{ + if (enabled != acceptHoverEvents()) { + setAcceptHoverEvents(enabled); + emit hoverEnabledChanged(); + } +} + Scene3DItem::CameraAspectRatioMode Scene3DItem::cameraAspectRatioMode() const { return m_cameraAspectRatioMode; @@ -243,6 +249,11 @@ void Scene3DItem::setItemArea(const QSize &area) surfaceSelector->setExternalRenderTargetSize(area); } +bool Scene3DItem::isHoverEnabled() const +{ + return acceptHoverEvents(); +} + void Scene3DItem::setCameraAspectModeHelper() { switch (m_cameraAspectRatioMode) { diff --git a/src/quick3d/imports/scene3d/scene3ditem_p.h b/src/quick3d/imports/scene3d/scene3ditem_p.h index 1419d9826..bb141b423 100644 --- a/src/quick3d/imports/scene3d/scene3ditem_p.h +++ b/src/quick3d/imports/scene3d/scene3ditem_p.h @@ -75,6 +75,7 @@ class Scene3DItem : public QQuickItem Q_PROPERTY(QStringList aspects READ aspects WRITE setAspects NOTIFY aspectsChanged) Q_PROPERTY(bool multisample READ multisample WRITE setMultisample NOTIFY multisampleChanged) Q_PROPERTY(CameraAspectRatioMode cameraAspectRatioMode READ cameraAspectRatioMode WRITE setCameraAspectRatioMode NOTIFY cameraAspectRatioModeChanged) + Q_PROPERTY(bool hoverEnabled READ isHoverEnabled WRITE setHoverEnabled NOTIFY hoverEnabledChanged) Q_CLASSINFO("DefaultProperty", "entity") public: explicit Scene3DItem(QQuickItem *parent = 0); @@ -86,6 +87,7 @@ public: bool multisample() const; void setMultisample(bool enable); void setItemArea(const QSize &area); + bool isHoverEnabled() const; enum CameraAspectRatioMode { AutomaticAspectRatio, @@ -98,12 +100,14 @@ public Q_SLOTS: void setAspects(const QStringList &aspects); void setEntity(Qt3DCore::QEntity *entity); void setCameraAspectRatioMode(CameraAspectRatioMode mode); + void setHoverEnabled(bool enabled); Q_SIGNALS: void aspectsChanged(); void entityChanged(); void multisampleChanged(); void cameraAspectRatioModeChanged(CameraAspectRatioMode mode); + void hoverEnabledChanged(); private Q_SLOTS: void applyRootEntityChange(); |