在 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 中创建小部件预览的主要内容,如果未能解决你的问题,请参考以下文章