2012-06-05 8 views
2

내가 자막처럼, 영상이 palying있는 동안 문자열을 끌기 위해 노력하고 ... 와 QVideoWidget 페인트 어차피 그 생성자에서 내가 할 :내가 포논 :: QVideoWidget이 QPainter를

painter = new QPainter(this); 

그리고 난 단지 테스트를 위해,이에 페인트 이벤트를 오버라이드 한 : 내 플레이어를 시작할 때

void MyVideoWidget::paintEvent(QPaintEvent* event) 
{ 
    painter->drawLine(0, 0, 1, 1); 
    //painter-> anything shows 
} 

그래서 난 단지 일반 비디오 어떤 아이디어를 재생, QPainter를했던 아무것도 볼?

+0

화가에 대한 펜 색상을 배경으로 설정하고 시도해보십시오. – ScarCode

답변

0

QPainter은 로컬 인스턴스를 paintEvent() 함수로 만드는 것이 더 일반적입니다. 이것은 begin()end() 방법 및 결과

QPainter painter(this); 

자동으로 호출된다. QPainter이 올바르게 작동하려면 이러한 설정이 필요합니다. paintEvent()에서 직접 전화를 걸면 차이가 있는지 확인할 수 있습니다.

동영상에 텍스트를 덧씌우려고 시도하는 또 다른 방법은 코드에 QLabel을 만들고 비디오 위젯을 부모로 만드는 것입니다. 비디오 위젯을 하위 클래스로 분류하거나 페인트 이벤트를 재정의 할 필요가 없습니다.

+0

... QLabel에 대한 제안과 함께 paintEvent를 재정 의하여 비디오 위젯과 별도로 도면을 직접 만들 수 있습니다. –

+0

QPainter 로컬 인스턴스를 사용하려고했지만 didnt 작업 중 하나를 사용해 보았습니다. VideoWidget이 PaintEvent를 사용하여 비디오를 렌더링하지 않는다고 생각하기 시작했습니다. QLabel을 대신 사용하려고합니다. 작동하고 표시하는 경우 여기에 다시 게시합니다. – fredcrs

+0

작동하지만, 배경이 투명합니다. VideoWidget이 프레임 자체를 변경하면 QLabel은 다시 그리지 않습니다. VideoWidget이 비디오를 렌더링하기 위해 paintEvent를 사용하지 않는다는 것을 확신합니다. 비디오가 재생 될 때 자막 레이블을 다시 칠하는 방법에 대한 아이디어는 무엇입니까 ?? 타이머를 사용하는 것은 좋은 생각이 아닙니다. 그렇습니까? 감사합니다 – fredcrs