Расслоение элементов пользовательского интерфейса в Qt Designer - PullRequest
4 голосов
/ 15 января 2012

У меня есть QLabel, для которого я постоянно устанавливаю его растровое изображение (воспроизведение видео). В моем приложении пользователь должен иметь возможность рисовать (коробки) над видео. Как можно наложить один из классов QPaintDevice (QWidget, QPixmap, QImage и т. Д.) Прямо выше и с тем же размером, что и QLabel для рисования. Этот элемент должен иметь прозрачный фон, поэтому на видео будут отображаться нарисованные на нем фигуры.

1 Ответ

4 голосов
/ 15 января 2012

Добавьте виджет, на котором вы хотите рисовать фигуры, как дочерний виджет метки видео.Сначала добавьте макет, чтобы дочерний виджет соответствовал размеру родительского виджета.Код будет выглядеть примерно так:

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

Вы должны увидеть текст, наложенный на видео, и он должен оставаться по центру над виджетом видео, если его размер изменен.В качестве окончательного кода вы бы использовали собственный подкласс виджетов, который позволял бы вам перехватывать действия мыши и рисовать прямоугольники, но это основная идея.

...