- Qt 6.9
- Qt Wayland Compositor
- C++ Classes
- QWaylandCompositorExtensionTemplate
- Qt Wayland Compositor | Commercial or GPLv3

# QWaylandCompositorExtensionTemplate Class

template <typename T> class QWaylandCompositorExtensionTemplate

QWaylandCompositorExtensionTemplate is a convenience class for subclassing QWaylandCompositorExtension. More...

Header: | `#include <QWaylandCompositorExtensionTemplate>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS WaylandCompositor)` `target_link_libraries(mytarget PRIVATE Qt6::WaylandCompositor)`
qmake: | `QT += waylandcompositor`
Inherits: | QWaylandCompositorExtension
Inherited By: | QWaylandIdleInhibitManagerV1, QWaylandIviApplication, QWaylandPresentationTime, QWaylandQtTextInputMethodManager, QWaylandTextInputManager, QWaylandViewporter, QWaylandXdgDecorationManagerV1, and QWaylandXdgOutputManagerV1

- List of all members, including inherited members

## Static Public Members

T * | findIn(QWaylandObject *container)

## Detailed Description

QWaylandCompositorExtensionTemplate is a template class which inherits QWaylandCompositorExtension and is convenience for building custom Wayland extensions with Qt.

It provides the connection between Qt Wayland Compositor and the class generated by `qtwaylandscanner`, based on the XML description of the extension protocol.

It provides two specific pieces of convenience:

- A reimplementation of QWaylandCompositorExtension::extensionInterface() which returns the `wl_interface` pointer for the qtwaylandscanner-generated base class.
- A static findIn() function which searches for an instance of the extension in a provided container, and returns this if it is found.

Typically, a new extension will dual-inherit QWaylandCompositorExtensionTemplate and the class generated by `qtwaylandscanner`.

QWaylandCompositorExtensionTemplate should be parameterized with the subclass itself:

     class MyExtension
         : public QWaylandCompositorExtensionTemplate<MyExtension>
         , QtWaylandServer::my_extension

In this example, `MyExtension` is an implementation of the generated interface `my_extension`.

See also Custom Shell.

## Member Function Documentation

### `[static]` T *QWaylandCompositorExtensionTemplate::findIn(QWaylandObject *container)

If any instance of the interface has been registered with container, this is returned. Otherwise null is returned. The look-up is based on the generated `interfaceName()` which matches the interface name in the protocol description.