【问题标题】:Dynamically Resize Video in a QGraphicScene在 QGraphicScene 中动态调整视频大小
【发布时间】:2015-10-08 18:50:32
【问题描述】:

所以我有一个 QMediaPlayer 播放视频,它包含在 QGraphicsVideoItem 内,在 QGraphicsScene 内。我在 QGraphicsScene 中也有文本。 QGraphicsView 调整为文本的大小,但不是视频的大小,所以我只能看到视频的左上角。

有没有办法让视频拉伸以填满可用空间?有没有办法让视频在可用空间居中,而不是卡在左上角?

下面是我当前的代码。

videoWidget = new VideoWidget();
QGraphicsView* graphicsView = new QGraphicsView(videoWidget);
QGraphicsScene* scene = new QGraphicsScene(graphicsView);
QGraphicsVideoItem* videoItem = new QGraphicsVideoItem();
QGraphicsTextItem* text = new QGraphicsTextItem("Lorem ipsum ");

text->setDefaultTextColor(Qt::white);
graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

player = new QMediaPlayer();
player->setVideoOutput(videoItem);

graphicsView->setScene(scene);
graphicsView->scene()->addItem(videoItem);
graphicsView->scene()->addItem(text);

playlist = new QMediaPlaylist();
playlist->setPlaybackMode(QMediaPlaylist::Loop);
player->setPlaylist(playlist);

playlistModel = new PlaylistModel();
playlistModel->setPlaylist(playlist);`

【问题讨论】:

    标签: c++ qt qgraphicsview qgraphicsscene qmediaplayer


    【解决方案1】:

    所以我想出了一种调整视频大小的方法,基本上我在 videoWidget 中实例化了 resizeEvent 以便它可以更新图形项的大小。

    void VideoWidget::resizeEvent(QResizeEvent *event)
    {
      QSize size = event->size();
    
      if(graphicsView != NULL)
        {//Changes the size of the area the video can display in
          graphicsView->setMinimumSize(size);
          graphicsView->setMaximumSize(size);
        }
      if(graphicsVideoItem != NULL)
        {//This changes the size/pos of the video itself
          graphicsVideoItem->setSize(size);
        }
      QVideoWidget::resizeEvent(event);
    }
    

    在哪里class VideoWidget : public QVideoWidget

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2023-03-06
      相关资源
      最近更新 更多