在Qt Designer中分层UI元素

时间:2012-01-14 23:27:40

标签: qt qt-creator qt-designer qlabel

我有一个QLabel,我不断设置它的像素图(视频播放)。在我的应用程序中,用户需要能够在视频上方绘制(框)。如何将QPaintDevice类(QWidget,QPixmap,QImage等)中的一个直接层叠在上面并与QLabel具有相同的大小进行绘制。此元素需要具有透明背景,因此在其上绘制的形状将显示在视频上。

1 个答案:

答案 0 :(得分:4)

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

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

您应该看到文字覆盖在视频上,如果调整大小,它应该保持在视频小部件的中心位置。对于您的最终代码,您将使用自己的一些小部件子类,允许您拦截鼠标操作并绘制矩形,但这是基本的想法。