2011-11-03 4 views
0

현재 Qt 그래픽보기 프레임 워크에 문제가 있습니다. 즉, QGraphicScene 배경색을 지우고 웹캠 그림을 찍는 기능을 실행하고 싶습니다. 지금까지 QWidget.repaint를 사용할 때 화면이 약 1 초 후에 다시 칠해졌고 그때까지 카메라 기능이 호출되었고 캡처 된 이미지는 항상 꺼져있었습니다. 여기 내 코드가 어떻게 생겼는지 보여줍니다.Qt Widget.repaint의 실행이 완료되었는지 확인하는 방법은 무엇입니까?

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

I 다른 기능 및 용도 신호 및 슬롯 호출로 호출을 배치 repaint() 시도하지만 여전히 실패. 화면이 새로 고침 될 때까지 프로그램을 일시 중지 할 수있는 방법이 있는지 알고 싶습니다.

+0

'Camera.Capture() '는 실제로 화면을 찍기 위해 외부 웹캠을 트리거합니까? –

+0

예. Camera.Capture() 함수는 외부 웹캠을 트리거하여 내 화면을 캡처합니다. 그러나 문제는 웹캠에서 캡처 한 것이 화면을 보여줄 것으로 기대하는 것과 같지 않다는 것입니다. –

답변

0

QGraphicsView은 서브 클래스가 대부분 QWidget보다 약간 더 진행되는데, 나는 무엇이 계속 진행되고 있는지에 대해 충분히 익숙하지는 않지만 문제는 그 장면과 관련이 있다고 추측 할 수도 있습니다. 실제로 뷰 포트 위젯에 렌더링됩니다. 아마도 viewport->repaint()을 호출하면 찾고있는 결과를 얻을 수 있습니까?

또한이 시나리오에서 웹캠을 실제로 사용해야하는 경우가 아니면 을 호출하고 QImage을 전달하여 직접 파일에 저장할 수 있습니다.

+0

이 경우 웹캠을 사용해야합니다. 내가 만들고있는 프로그램의 핵심은 응용 프로그램의 가상 장면을 사용하여 카메라로 캡처 한 배경을 제거하는 것입니다. 뷰포트 -> repaint()도 시도했지만 화면 렌더링은 여전히 ​​뒤쳐져 있습니다. –

관련 문제