2012-01-14 29 views
4

私は常にpixmap(ビデオ再生)を設定しているQLabelを持っています。私のアプリケーションでは、ユーザーはビデオの上に(ボックス)を描くことができる必要があります。どのようにQPaintDeviceクラス(QWidget、QPixmap、QImageなど)の1つを描画のためのQLabelと同じサイズで直接重ねることができますか?この要素は透明な背景を持つ必要があり、その上に描画された図形がビデオ上に表示されます。QtデザイナーでのUI要素のレイヤー化

答えて

4

シェイプを描画するウィジェットをビデオラベルの子ウィジェットとして追加します。子ウィジェットが親ウィジェットのサイズと一致するように、まずレイアウトを追加します。あなたはテキストが映像にオーバーレイし、それがサイズ変更された場合、それはビデオウィジェットの上に中心ままにしておく必要があり見るべき

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

:コードは次のようなものになるだろう。あなたの最終的なコードのために、マウスアクションを傍受して長方形を描くことを可能にする、あなた自身のウィジェットサブクラスを使用しますが、それは基本的な考え方です。

+0

オブジェクトのオーバーレイは何ですか?あなたはそれを定義しません – user1767754

+0

"overlayWidget"という名前のQLabelです。修正しました。ありがとうございます。 –

関連する問題