如何确保Qt Widget.repaint已经运行完毕?

时间:2011-11-03 22:28:27

标签: c++ c qt graphics computer-vision

我目前在使用Qt图形视图框架时遇到问题,我想清除我的QGraphicScene背景颜色,然后运行一个功能来拍摄网络摄像头图片。到目前为止,当我使用QWidget.repaint时,屏幕仅在大约1秒后重新绘制,然后调用了相机功能,并且捕获的图像始终处于关闭状态。这是我的代码目前的样子。

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

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

1 个答案:

答案 0 :(得分:0)

QGraphicsView比大多数QWidget子类要多得多,而且我不太熟悉它以确定发生了什么,但我可能冒昧地猜测你的问题是与场景实际呈现在视口小部件上的事实有关。也许打电话给viewport->repaint()会给你你想要的结果吗?

此外,除非您确实需要在此方案中使用网络摄像头,否则您可以在场景中调用::render()并将其传递给QImage,您可以将其直接保存到文件中。