Как замаскировать видео в Qgraphicsvideoitem любой формы

Я использую Qgraphicsvideoitem для показа видео с помощью Qmediaplayer. Теперь, если у меня есть предмет круглой формы, как я могу замаскировать это видео?

Вот мой код и изображение:

VideoClass::VideoClass(QGraphicsVideoItem *parent):QGraphicsVideoItem(parent)
{
    QMediaPlayer *player = new QMediaPlayer(this, QMediaPlayer::VideoSurface);
    QMediaPlaylist *playlist = new QMediaPlaylist;
    playlist->addMedia(QUrl::fromLocalFile("/root/Desktop/Content/Robotica_1080.wmv"));
    playlist->setPlaybackMode(QMediaPlaylist::Loop);
    player->setPlaylist(playlist);
    player->play();
    player->setVideoOutput(this);
}

void VideoClass::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    QGraphicsVideoItem::paint(painter, option, widget);
    painter->drawEllipse(0, 0, 400, 400);
}

QRectF VideoClass::boundingRect() const
{
    return QRectF(0,0,400,400);}

1 ответ

Решение

Я думаю, что вы хотите обрезать видео в путь, который вы рисуете. Если это так, используйте для этого витальные функции shape и opaqueArea. И не забудьте установить флаг QGraphicsItem::ItemClipsToShape.

Другие вопросы по тегам