- Qt 6.4
- Qt Wayland Compositor
- C++ Classes
- QWaylandQuickShellIntegration
- Qt Wayland Compositor | Commercial or GPLv3

# QWaylandQuickShellIntegration Class

Provides support for shell surface integration with QtQuick. More...

Header: | #include <QWaylandQuickShellIntegration>
CMake: | find_package(Qt6 REQUIRED COMPONENTS Waylandcompositor) target_link_libraries(mytarget PRIVATE Qt6::Waylandcompositor)
qmake: | QT += waylandcompositor
Since: | Qt 5.14

## Detailed Description

Shell surface implementations should inherit from this class in order to provide an integration between the shell surface and QtQuick.

Shell integration is installed as an event filter for a QWaylandQuickShellSurfaceItem. Reimplement the event filter method and return `true` when you want to filter the event out, otherwise return `false`.

Example:

     class MyShellIntegration : public QWaylandQuickShellIntegration
     {
         Q_OBJECT
     public:
         MyShellIntegration(QObject *parent = nullptr);

     protected:
         bool eventFilter(QObject *object, QEvent *event) override;
     };

     MyShellIntegration::MyShellIntegration(QObject *parent)
         : QWaylandQuickShellIntegration(parent)
     {
     }

     bool MyShellIntegration::eventFilter(QObject *object, QEvent *event)
     {
         QWaylandQuickShellSurfaceItem *shellSurfaceItem = qobject_cast<QWaylandQuickShellSurfaceItem *>(object);
         if (!shellSurfaceItem)
             return QWaylandQuickShellIntegration::eventFilter(object, event);

         if (event->type() == QEvent::MouseMove) {
             QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
             qDebug() << "Mouse moved on" << shellSurfaceItem << "pos:" << mouseEvent->pos();
             return true;
         }

         return QWaylandQuickShellIntegration::eventFilter(object, event);
     }

See also QWaylandQuickShellSurfaceItem and QObject::eventFilter().