在 Qt 中创建小部件预览

Posted

技术标签:

【中文标题】在 Qt 中创建小部件预览【英文标题】:create widget preview in Qt 【发布时间】:2014-04-17 12:41:45 【问题描述】:

在 Qt 中,是否可以像 Windows7 中的实时任务栏预览一样创建小部件的临时预览(GUI 的快速快照)(当我们将光标放在任务栏中的项目上时,快照窗口会显示在最佳) ? 任何想法

【问题讨论】:

QPixmap::grabWidget 【参考方案1】:

您可以使用 QWidget 方法将小部件渲染到图像中:

void    render(QPaintDevice * target, const QPoint & targetOffset = QPoint(), const QRegion & sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ))
void    render(QPainter * painter, const QPoint & targetOffset = QPoint(), const QRegion & sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ))

并使用所需大小的结果 QImage 向用户显示预览。

【讨论】:

【参考方案2】:

作为evilruff has said,可以将小部件渲染到绘画设备或画家中。当然,您要为小部件的额外绘制付出代价。

另一个选项是grab the composited widget's backing store directly as a QImage。在 Qt 5 中,这适用于所有平台,但由 OpenGL 上下文支持的小部件除外。

【讨论】:

以上是关于在 Qt 中创建小部件预览的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php 和 javascript 中创建小部件?

如何在 Qt 中创建共享小部件的子目录?

在 Qt 设计器中创建要提升的自定义小部件

如何在 Qt 的后续函数调用中访问在函数中创建的小部件

在 Qt C++ 应用程序中创建 python 解释器小部件的简单方法?

在 aux 方法中创建的 QWidget 不显示/绘制