2012-01-14 3 views
4

저는 계속 pixmap (비디오 재생)을 설정하고있는 QLabel을 가지고 있습니다. 내 응용 프로그램에서는 사용자가 비디오 위에 (상자) 그릴 수 있어야합니다. QPaintDevice 클래스 (QWidget, QPixmap, QImage 등) 중 하나를 직접 페인팅 할 QLabel과 동일한 크기로 레이어하는 방법은 무엇입니까? 이 요소는 투명한 배경을 가져야 만 그 위에 그려진 모양이 비디오 위에 나타납니다.Qt 디자이너의 UI 요소 겹침

답변

4

도형을 그릴 위젯을 비디오 라벨의 하위 위젯으로 추가하십시오. 하위 위젯이 상위 위젯의 크기와 일치하도록 먼저 레이아웃을 추가하십시오.

QHBoxLayout *layout = new QHBoxLayout(videoWidget); 
QLabel *overlayWidget = new QLabel(); 
overlayWidget->setAlignment(Qt::AlignCenter); 
overlayWidget->setText("Overlaid Text"); 
layout->addWidget(overlayWidget); 

당신은 텍스트가 영상에 중첩과 크기가 조정되는 경우가 비디오 위젯 위에 중심 유지되어야 나타납니다 : 코드는 다음과 같은 것이다. 최종 코드의 경우에는 마우스 동작을 가로 채고 사각형을 그릴 수있는 자체 widget 하위 클래스를 사용하지만 기본 개념입니다.

+0

개체의 오버레이 란 무엇입니까? 당신은 그것을 정의하지 않습니다 – user1767754

+0

그것은 "overlayWidget"라는 QLabel입니다. 고쳐 줘서 고마워. –