繁体   English   中英

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

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

我目前在使用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()调用,并使用信号和插槽调用,但仍然失败。 我想知道是否有办法在刷新屏幕之前暂停程序。

QGraphicsView比大多数QWidget子类有更多的功能,我对它的定义还不够熟悉,无法肯定发生了什么,但是我可以冒险猜出您的问题与场景实际渲染到屏幕上有关视口小部件。 也许调用viewport->repaint()会给您想要的结果?

另外,除非在这种情况下确实需要使用网络摄像头,否则可以在场景上调用::render()并将其传递给QImage ,然后将其直接保存到文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM