36 mLayout =
new QVBoxLayout();
37 mLayout->setContentsMargins( 0, 0, 0, 0 );
39 mVideoWidget =
new QVideoWidget(
this );
40 const int vHeight = QFontMetrics( font() ).height() * 12;
41 mVideoWidget->setMinimumHeight( vHeight );
42 mVideoWidget->setMaximumHeight( vHeight );
43 mLayout->addWidget( mVideoWidget );
45 QHBoxLayout *controlsLayout =
new QHBoxLayout();
46 controlsLayout->setContentsMargins( 0, 0, 0, 0 );
48 mPlayButton =
new QPushButton(
this );
49 mPlayButton->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Preferred );
51 mPlayButton->setCheckable(
true );
52 controlsLayout->addWidget( mPlayButton );
54 mPositionSlider =
new QSlider(
this );
55 mPositionSlider->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
56 mPositionSlider->setOrientation( Qt::Horizontal );
57 controlsLayout->addWidget( mPositionSlider );
59 mDurationLabel =
new QLabel(
this );
60 mDurationLabel->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Preferred );
61 mDurationLabel->setAlignment( Qt::AlignHCenter );
62 mDurationLabel->setText( u
"-"_s );
63 QFontMetrics fm( mDurationLabel->font() );
64 mDurationLabel->setMinimumWidth( fm.boundingRect( u
"00:00:00"_s ).width() );
65 controlsLayout->addWidget( mDurationLabel );
67 QWidget *controls =
new QWidget();
68 controls->setLayout( controlsLayout );
70 mLayout->addWidget( controls );
74 setControlsEnabled(
false );
76 mMediaPlayer.setVideoOutput( mVideoWidget );
78 connect( &mMediaPlayer, &QMediaPlayer::mediaStatusChanged,
this, &QgsMediaWidget::mediaStatusChanged );
79 connect( &mMediaPlayer, &QMediaPlayer::positionChanged,
this, [
this]() {
80 mPositionSlider->setValue(
static_cast<int>( mMediaPlayer.position() / 1000 ) );
83 connect( mPlayButton, &QAbstractButton::clicked,
this, [
this]() {
84 if ( mMediaPlayer.playbackState() == QMediaPlayer::PlayingState )
93 connect( mPositionSlider, &QAbstractSlider::sliderReleased,
this, [
this]() {
94 mMediaPlayer.setPosition(
static_cast<qint64
>( mPositionSlider->value() ) * 1000 );
166 mDurationLabel->setText( u
"%1:%2:%3"_s.arg( QString::number( hours ), 2,
'0' ).arg( QString::number( minutes ), 2,
'0' ).arg( QString::number( seconds ), 2,
'0' ) );