如何确保Qt小部件.重新油漆已完成运行

How to make sure Qt Widget.repaint has finished running?

本文关键字:新油漆 已完成 运行 小部 Qt 何确保 确保      更新时间:2023-10-16

我目前有Qt图形视图框架的问题,即,我想清除我的QGraphicScene背景颜色,然后运行一个函数来拍摄网络摄像头图片。到目前为止,当我使用QWidget。重新绘制屏幕只在大约1秒后重新绘制,此时相机功能已被调用,图像捕获总是关闭。下面是我的代码目前的样子。

//Scene is a QGraphicScene
//View is a QGraphicView
//Camera is a camera object
Scene.setBackgroundBrush(Qt::Blue)
View.repaint()
Camera.Capture()

我试过用另一个函数包装repaint()调用,并使用信号和插槽调用,但它仍然失败。我想知道是否有办法暂停程序,直到屏幕刷新。

一个QGraphicsView有一点比大多数QWidget子类,我不熟悉它说什么是肯定会发生的,但我可能会冒险猜测,你的问题是有关的事实,场景实际上是渲染到视图端口小部件。也许调用viewport->repaint()会给你你正在寻找的结果?

另外,除非你真的需要在这个场景中使用网络摄像头,你可以在你的场景中调用::render(),并传递一个QImage,你可以直接保存到一个文件