2012-01-14 61 views
4

我有一个QLabel,我经常设置它的像素映射(视频回放)。在我的应用程序中,用户需要能够在视频上方绘制(框)。我如何将QPaintDevice类(QWidget,QPixmap,QImage等)之一直接放在上面,并且与QLabel的大小相同以进行绘制。该元素需要具有透明背景,因此在其上绘制的图形将显示在视频上。在Qt Designer中分层UI元素

回答

4

将您想要绘制形状的小部件添加为视频标签的子部件。首先添加布局,以便子部件将匹配父部件的大小。该代码将是这样的:

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

你应该看到文本叠加在视频,它应该在视频控件如果调整保持居中。对于最终的代码,您可以使用自己的一些小部件子类,它允许您拦截鼠标操作并绘制矩形,但这是基本思路。

+0

什么是对象的覆盖?你没有定义它 – user1767754 2016-01-17 08:14:41

+0

这是名为“overlayWidget”的QLabel。修正它,谢谢。 – 2016-01-19 17:25:07