QPaintDeviceWindow Class
QWindow 的便捷子类,同时也是QPaintDevice 。更多内容...
| 头文件: | #include <QPaintDeviceWindow> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 继承自: | QWindow 以及QPaintDevice |
| 被继承者: |
公共函数
公共槽
| void | update() |
重新实现的受保护函数
| virtual void | paintEvent(QPaintEvent *event) override |
详细说明
QPaintDeviceWindow 类似于普通的QWindow ,但额外具备绘图设备的功能。每当需要更新内容时,都会调用虚拟函数paintEvent()。子类只要重写此函数,即可在窗口上直接打开一个QPainter 。
注意:该类 不能直接在应用程序中使用,而是作为QOpenGLWindow 等子类的基类。
另请参阅 QOpenGLWindow 。
成员函数文档
[override virtual protected] void QPaintDeviceWindow::paintEvent(QPaintEvent *event)
重写:QWindow::paintEvent(QPaintEvent *ev)。
处理通过event 参数传递的绘制事件。
默认实现不执行任何操作。请重写此函数以执行绘制操作。如有必要,可从event 中获取需要更新的区域。
[slot] void QPaintDeviceWindow::update()
将整个窗口标记为“已修改”,并安排重绘。
注意: 在下次绘制事件发生之前,对该函数的后续 调用将被忽略。
注意:对于 非可见窗口,更新操作将被推迟,直到该窗口再次变为可见。
注意:此 插槽是重载的。要连接到此插槽:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
paintDeviceWindow, qOverload<>(&QPaintDeviceWindow::update));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
paintDeviceWindow, [receiver = paintDeviceWindow]() { receiver->update(); });void QPaintDeviceWindow::update(const QRect &rect)
将窗口的rect 标记为已修改,并安排重新绘制。
注意: 在下次绘制事件发生之前,对该函数的后续 调用将被忽略,但rect 会被添加到待更新区域中。
注意:对于 未显式的窗口,更新操作将被推迟,直到该窗口再次显式显示为止。
void QPaintDeviceWindow::update(const QRegion ®ion)
将窗口的region 标记为已修改,并安排重新绘制。
注意: 在下次绘制事件发生之前,对该函数的后续 调用将被忽略,但region 会被添加到待更新区域中。
注意:对于 非可见窗口,更新操作将被推迟,直到该窗口再次变为可见为止。
© 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.