本页内容

QWaylandView Class

QWaylandView 类表示输出设备上一个表面的视图。更多内容...

头文件: #include <QWaylandView>
CMake: find_package(Qt6 REQUIRED COMPONENTS WaylandCompositor)
target_link_libraries(mytarget PRIVATE Qt6::WaylandCompositor)
qmake: QT += waylandcompositor
继承自: QObject

属性

公共函数

QWaylandView(QObject *renderObject = nullptr, QObject *parent = nullptr)
virtual ~QWaylandView() override
virtual bool advance()
bool allowDiscardFrontBuffer() const
virtual void bufferCommitted(const QWaylandBufferRef &buffer, const QRegion &damage)
virtual QWaylandBufferRef currentBuffer()
virtual QRegion currentDamage()
virtual void discardCurrentBuffer()
bool isBufferLocked() const
bool isPrimary() const
QWaylandOutput *output() const
void setAllowDiscardFrontBuffer(bool discard)
void setBufferLocked(bool locked)
void setOutput(QWaylandOutput *output)
void setPrimary()
void setSurface(QWaylandSurface *surface)
QWaylandSurface *surface() const
struct wl_resource *surfaceResource() const

信号

详细说明

QWaylandView 负责在特定输出设备上呈现一个绘图表面,并管理包含待渲染内容的缓冲区。同一个绘图表面可以包含多个视图。

属性文档

allowDiscardFrontBuffer : bool

默认情况下,视图会锁定当前缓冲区,直到调用advance() 方法为止。将此属性设置为true ,可允许 Qt 在主视图不再使用该缓冲区时释放它。

这可用于避免以下情况:更新频率较低的次要视图会拖慢客户端应用程序的帧率。

访问函数:

bool allowDiscardFrontBuffer() const
void setAllowDiscardFrontBuffer(bool discard)

通知器信号:

void allowDiscardFrontBufferChanged()

bufferLocked : bool

该属性表示视图的缓冲区当前是否被锁定。当缓冲区被锁定时,advance() 不会切换到下一个缓冲区,并返回false 。

默认值为 `false`。

访问函数:

bool isBufferLocked() const
void setBufferLocked(bool locked)

通知信号:

void bufferLockedChanged()

output : QWaylandOutput*

该属性存储了此视图用于显示其表面的输出。

访问函数:

QWaylandOutput *output() const
void setOutput(QWaylandOutput *output)

通知信号:

void outputChanged()

surface : QWaylandSurface*

该属性保存了此QWaylandView 所查看的表面。

访问函数:

QWaylandSurface *surface() const
void setSurface(QWaylandSurface *surface)

通知信号:

void surfaceChanged()

成员函数文档

QWaylandView::QWaylandView(QObject *renderObject = nullptr, QObject *parent = nullptr)

根据给定的renderObject 和parent 实例化一个QWaylandView。

[override virtual noexcept] QWaylandView::~QWaylandView()

销毁QWaylandView 。

[virtual] bool QWaylandView::advance()

将当前缓冲区和伤害区域更新为客户端提交的最新版本。如果自上次调用 advance() 以来有新内容被提交,则返回 true;否则返回 false。

另请参阅 currentBuffer() 和currentDamage()。

[virtual] void QWaylandView::bufferCommitted(const QWaylandBufferRef &buffer, const QRegion &damage)

当一个新的buffer 被提交到该视图的画布上时,会调用此函数。damage 包含与当前缓冲区不同的区域,即需要更新的区域。新的buffer 将在下次调用advance()时成为当前缓冲区。

重写此函数的子类必须调用基类的实现。

[virtual] QWaylandBufferRef QWaylandView::currentBuffer()

返回对该视图当前缓冲区的引用。

[virtual] QRegion QWaylandView::currentDamage()

返回该视图的当前伤害区域。

[virtual] void QWaylandView::discardCurrentBuffer()

强制视图丢弃其当前缓冲区,以便在客户端重新使用该缓冲区。

bool QWaylandView::isPrimary() const

如果此QWaylandView 是QWaylandSurface

另请参阅 QWaylandSurface::primaryView 。

void QWaylandView::setPrimary()

将此QWaylandView 设为该表面的主视图。

如果该QWaylandView 未持有任何QWaylandSurface

另请参阅 isPrimary() 和QWaylandSurface::primaryView 。

struct wl_resource *QWaylandView::surfaceResource() const

返回此QWaylandView 对应的Wayland表面资源。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.