2015-10-08 4 views
0

Итак, у меня есть проигрыватель QMediaPlayer, который он содержится внутри QGraphicsVideoItem внутри QGraphicsScene. У меня также есть текст внутри QGraphicsScene. QGraphicsView изменяет размер текста, но не видео, поэтому я могу видеть только левый верхний угол видео.Динамически изменяет размер видео в QGraphicScene

Есть ли способ заставить видео растягиваться, чтобы заполнить пространство? И есть ли способ сосредоточить видео в доступном пространстве, вместо того, чтобы застревать в верхнем левом углу?

Ниже мой текущий код.

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);` 

ответ

0

Так что я придумал способ, чтобы изменить размер видео, в основном я инстанцирован в resizeEvent в VideoWidget так, что он будет обновлять размеры графических элементов.

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

Смежные вопросы