簡體   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