33 mLayout =
new QVBoxLayout();
34 mLayout->setContentsMargins( 0, 0, 0, 0 );
36 mVideoWidget =
new QVideoWidget(
this );
37 const int vHeight = QFontMetrics( font() ).height() * 12;
38 mVideoWidget->setMinimumHeight( vHeight );
39 mVideoWidget->setMaximumHeight( vHeight );
40 mLayout->addWidget( mVideoWidget );
42 QHBoxLayout *controlsLayout =
new QHBoxLayout();
43 controlsLayout->setContentsMargins( 0, 0, 0, 0 );
45 mPlayButton =
new QPushButton(
this );
46 mPlayButton->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Preferred );
48 mPlayButton->setCheckable(
true );
49 controlsLayout->addWidget( mPlayButton );
51 mPositionSlider =
new QSlider(
this );
52 mPositionSlider->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
53 mPositionSlider->setOrientation( Qt::Horizontal );
54 controlsLayout->addWidget( mPositionSlider );
56 mDurationLabel =
new QLabel(
this );
57 mDurationLabel->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Preferred );
58 mDurationLabel->setAlignment( Qt::AlignHCenter );
59 mDurationLabel->setText( QStringLiteral(
"-" ) );
60 QFontMetrics fm( mDurationLabel->font() );
61 mDurationLabel->setMinimumWidth( fm.boundingRect( QStringLiteral(
"00:00:00" ) ).width() );
62 controlsLayout->addWidget( mDurationLabel );
64 QWidget *controls =
new QWidget();
65 controls->setLayout( controlsLayout );
67 mLayout->addWidget( controls );
71 setControlsEnabled(
false );
73 mMediaPlayer.setVideoOutput( mVideoWidget );
75 connect( &mMediaPlayer, &QMediaPlayer::mediaStatusChanged,
this, &QgsMediaWidget::mediaStatusChanged );
76 connect( &mMediaPlayer, &QMediaPlayer::positionChanged,
this, [
this]() {
77 mPositionSlider->setValue(
static_cast<int>( mMediaPlayer.position() / 1000 ) );
80 connect( mPlayButton, &QAbstractButton::clicked,
this, [
this]() {
81#if QT_VERSION >= QT_VERSION_CHECK( 6, 0, 0 )
82 if ( mMediaPlayer.playbackState() == QMediaPlayer::PlayingState )
84 if ( mMediaPlayer.state() == QMediaPlayer::PlayingState )
94 connect( mPositionSlider, &QAbstractSlider::sliderReleased,
this, [
this]() {
95 mMediaPlayer.setPosition(
static_cast<qint64
>( mPositionSlider->value() ) * 1000 );
171 mDurationLabel->setText( QStringLiteral(
"%1:%2:%3" ).arg( QString::number( hours ), 2,
'0' ).arg( QString::number( minutes ), 2,
'0' ).arg( QString::number( seconds ), 2,
'0' ) );