Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Media player not working for multiple videos
Forum Updated to NodeBB v4.3 + New Features

Media player not working for multiple videos

Scheduled Pinned Locked Moved Solved General and Desktop
qt 5.5videosurfacemedia playergraphicview
41 Posts 8 Posters 10.4k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Kinesis
    2 Jul 2018, 06:04

    This is my second post for this question . My code doesn't work at all . I don't know where I did mistakes . The problem is that when I load for multiple videos , I can only control last video player's play pause action and not the others. And I can't play other videos .Here is my code . By the way I got this code by combining from my last post with the help of @jslum.

    //header

    namespace Ui {
    class MainWindow;
    }
    QT_BEGIN_NAMESPACE
    class QAbstractButton;
    class QSlider;
    class QGraphicsVideoItem;
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
        bool isPlayerAvailable() const;
        QSize sizeHint() const override;
    
    public slots:
    
        void play();
    
    private slots:
        void mediaStateChanged(QMediaPlayer::State state);
        void positionChanged(qint64 position);
        void durationChanged(qint64 duration);
        void setPosition(int position);
    
    
    private:
        Ui::MainWindow *ui;
        //QMediaPlayer *player = nullptr;
        QVector<QMediaPlayer*> player;
        QMediaPlayer *mediaPlayer = nullptr;
        QMediaPlaylist *playlist = nullptr;
        QGraphicsVideoItem *videoItem = nullptr;
        QAbstractButton *m_playButton = nullptr;
        QSlider *m_positionSlider = nullptr;
    
    };
    
    

    //mainwindow.cpp

    ui->listWidget->setFlow(QListView::LeftToRight);
        ui->listWidget->setMinimumSize(760,350);
        ui->listWidget->setGridSize(QSize(360, 360));
        ui->listWidget->setResizeMode(QListView::Adjust);
        ui->listWidget->setViewMode(QListView::ListMode);
        ui->listWidget->setWrapping(true);
    
        QDir directory = QFileDialog::getExistingDirectory(this, tr("Open Directory"),"/home",
    
                                                           QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
    
        directory.setNameFilters({"*.mp4" , "*.avi" , "*.flv" , "*.mwv"});
    
        for(const QFileInfo & finfo: directory.entryInfoList()){
    
            //player = new QMediaPlayer(this,QMediaPlayer::VideoSurface);
            //player = new QVector<QMediaPlayer*>();
            //playlist = new QMediaPlaylist;
            // playlist->addMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
            mediaPlayer = new QMediaPlayer();
            mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
            // mediaPlayer->setMedia(playlist);
            videoItem = new QGraphicsVideoItem;
            //videoItem->setSize(QSize(320,240));
            QGraphicsScene *scene = new QGraphicsScene(this);
            QGraphicsView *graphicsView = new QGraphicsView(scene);
            scene->addItem(videoItem);
    
            mediaPlayer->setVideoOutput(videoItem);
            player.append(mediaPlayer);
    
    
            m_playButton = new QPushButton;
            m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
    
    
            m_positionSlider = new QSlider(Qt::Horizontal);
            m_positionSlider->setRange(0, 0);
    
    
            auto    item = new QListWidgetItem("", ui->listWidget);
            auto    widget = new QWidget;
            auto    label = new QLabel(finfo.fileName());
            auto    vb = new QVBoxLayout;
    
            QBoxLayout *controlLayout = new QHBoxLayout;
            controlLayout->setMargin(0);
            controlLayout->addWidget(m_playButton);
            controlLayout->addWidget(m_positionSlider);
    
            vb->addWidget(label,1);
            vb->addWidget(graphicsView,9);
            vb->addLayout(controlLayout);
            widget->setLayout(vb);
            widget->setMinimumSize(340, 340);
            ui->listWidget->setItemWidget(item,widget);
    
    
        }
        connect(m_playButton, &QAbstractButton::clicked, this, &MainWindow::play);
        connect(m_positionSlider, &QAbstractSlider::sliderMoved,this, &MainWindow::setPosition);
    
        connect(mediaPlayer, &QMediaPlayer::stateChanged, this, &MainWindow::mediaStateChanged);
        connect(mediaPlayer, &QMediaPlayer::positionChanged, this, &MainWindow::positionChanged);
        connect(mediaPlayer, &QMediaPlayer::durationChanged, this, &MainWindow::durationChanged);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    QSize MainWindow::sizeHint() const
    {
        return (videoItem->size() * qreal(3) / qreal(2)).toSize();
    }
    
    bool MainWindow::isPlayerAvailable() const
    {
        return mediaPlayer->isAvailable();
    }
    
    
    
    void MainWindow::play()
    {
        switch (mediaPlayer->state()) {
        case QMediaPlayer::PlayingState:
            mediaPlayer->pause();
            break;
        default:
            mediaPlayer->play();
            break;
        }
    }
    
    void MainWindow::mediaStateChanged(QMediaPlayer::State state)
    {
        switch(state) {
        case QMediaPlayer::PlayingState:
            m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPause));
            break;
        default:
            m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
            break;
        }
    }
    
    void MainWindow::positionChanged(qint64 position)
    {
        m_positionSlider->setValue(position);
    }
    
    void MainWindow::durationChanged(qint64 duration)
    {
        m_positionSlider->setRange(0, duration);
    }
    
    void MainWindow::setPosition(int position)
    {
        mediaPlayer->setPosition(position);
    }
    
    J Online
    J Online
    jsulm
    Lifetime Qt Champion
    wrote on 2 Jul 2018, 06:24 last edited by
    #3

    @Kinesis Please do not ask same question in a new thread.
    Here https://forum.qt.io/topic/92058/multiple-media-player-for-each-video your question was already answered, but you apparently did not do as suggested. This is what I suggested:

    QMediaPlayer *mediaPlayer = new QMediaPlayer();
    mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
    ...
    mediaPlayer->setVideoOutput(m_videoItem);
    m_mediaPlayer.append(mediaPlayer);
    

    So, here mediaPlayer is a not a MEMBER variable (as @SGaist suggested above).
    And I don't see the list to store the pointers to media players - did you actually try what was suggested?

    https://forum.qt.io/topic/113070/qt-code-of-conduct

    K 1 Reply Last reply 2 Jul 2018, 06:33
    3
    • J jsulm
      2 Jul 2018, 06:24

      @Kinesis Please do not ask same question in a new thread.
      Here https://forum.qt.io/topic/92058/multiple-media-player-for-each-video your question was already answered, but you apparently did not do as suggested. This is what I suggested:

      QMediaPlayer *mediaPlayer = new QMediaPlayer();
      mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
      ...
      mediaPlayer->setVideoOutput(m_videoItem);
      m_mediaPlayer.append(mediaPlayer);
      

      So, here mediaPlayer is a not a MEMBER variable (as @SGaist suggested above).
      And I don't see the list to store the pointers to media players - did you actually try what was suggested?

      K Offline
      K Offline
      Kinesis
      wrote on 2 Jul 2018, 06:33 last edited by
      #4

      @jsulm
      I tried as u said but I doesn't work . It won't even play a video . That's why I am asking for the second time

      K 1 Reply Last reply 2 Jul 2018, 13:35
      0
      • K Kinesis
        2 Jul 2018, 06:33

        @jsulm
        I tried as u said but I doesn't work . It won't even play a video . That's why I am asking for the second time

        K Offline
        K Offline
        kenchan
        wrote on 2 Jul 2018, 13:35 last edited by
        #5

        @Kinesis
        You should post your answers, further issues, etc. regarding your thread in the same thread. That is what threads are for after all :-).

        1 Reply Last reply
        2
        • K Offline
          K Offline
          Kinesis
          wrote on 3 Jul 2018, 03:06 last edited by Kinesis 7 Mar 2018, 03:16
          #6

          @jsulm
          Here is waht I tried as u said . I placed "mediaPlayer" at the start of the program because I need it to use in slots. But it doesn't work .

          QMediaPlayer *mediaPlayer = new QMediaPlayer();
          MainWindow::MainWindow(QWidget *parent) :
              QMainWindow(parent),
              ui(new Ui::MainWindow)
          {
              ui->setupUi(this);
          
              ui->listWidget->setFlow(QListView::LeftToRight);
              ui->listWidget->setMinimumSize(760,350);
              ui->listWidget->setGridSize(QSize(360, 360));
              ui->listWidget->setResizeMode(QListView::Adjust);
              ui->listWidget->setViewMode(QListView::ListMode);
              ui->listWidget->setWrapping(true);
          
              QDir directory = QFileDialog::getExistingDirectory(this, tr("Open Directory"),"/home",
          
                                                                 QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
          
              directory.setNameFilters({"*.mp4" , "*.avi" , "*.flv" , "*.mwv"});
          
              for(const QFileInfo & finfo: directory.entryInfoList()){
          
                  //player = new QMediaPlayer(this,QMediaPlayer::VideoSurface);
                  //player = new QVector<QMediaPlayer*>();
                  //playlist = new QMediaPlaylist;
                  // playlist->addMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                  //mediaPlayer = new QMediaPlayer();
                  mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                  // mediaPlayer->setMedia(playlist);
                  videoItem = new QGraphicsVideoItem;
                  //videoItem->setSize(QSize(320,240));
                  QGraphicsScene *scene = new QGraphicsScene(this);
                  QGraphicsView *graphicsView = new QGraphicsView(scene);
                  scene->addItem(videoItem);
          
                  mediaPlayer->setVideoOutput(videoItem);
                  player.append(mediaPlayer);
          
          
                  m_playButton = new QPushButton;
                  m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
          
          
                  m_positionSlider = new QSlider(Qt::Horizontal);
                  m_positionSlider->setRange(0, 0);
                  connect(m_playButton, &QAbstractButton::clicked, this, &MainWindow::play);
                  connect(m_positionSlider, &QAbstractSlider::sliderMoved,this, &MainWindow::setPosition);
          
                  connect(mediaPlayer, &QMediaPlayer::stateChanged, this, &MainWindow::mediaStateChanged);
                  connect(mediaPlayer, &QMediaPlayer::positionChanged, this, &MainWindow::positionChanged);
                  connect(mediaPlayer, &QMediaPlayer::durationChanged, this, &MainWindow::durationChanged);
          
                  auto    item = new QListWidgetItem("", ui->listWidget);
                  auto    widget = new QWidget;
                  auto    label = new QLabel(finfo.fileName());
                  auto    vb = new QVBoxLayout;
          
                  QBoxLayout *controlLayout = new QHBoxLayout;
                  controlLayout->setMargin(0);
                  controlLayout->addWidget(m_playButton);
                  controlLayout->addWidget(m_positionSlider);
          
                  vb->addWidget(label,1);
                  vb->addWidget(graphicsView,9);
                  vb->addLayout(controlLayout);
                  widget->setLayout(vb);
                  widget->setMinimumSize(340, 340);
                  ui->listWidget->setItemWidget(item,widget);
          
          
              }
          
          }
          
          
          J 1 Reply Last reply 3 Jul 2018, 04:16
          0
          • K Kinesis
            3 Jul 2018, 03:06

            @jsulm
            Here is waht I tried as u said . I placed "mediaPlayer" at the start of the program because I need it to use in slots. But it doesn't work .

            QMediaPlayer *mediaPlayer = new QMediaPlayer();
            MainWindow::MainWindow(QWidget *parent) :
                QMainWindow(parent),
                ui(new Ui::MainWindow)
            {
                ui->setupUi(this);
            
                ui->listWidget->setFlow(QListView::LeftToRight);
                ui->listWidget->setMinimumSize(760,350);
                ui->listWidget->setGridSize(QSize(360, 360));
                ui->listWidget->setResizeMode(QListView::Adjust);
                ui->listWidget->setViewMode(QListView::ListMode);
                ui->listWidget->setWrapping(true);
            
                QDir directory = QFileDialog::getExistingDirectory(this, tr("Open Directory"),"/home",
            
                                                                   QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
            
                directory.setNameFilters({"*.mp4" , "*.avi" , "*.flv" , "*.mwv"});
            
                for(const QFileInfo & finfo: directory.entryInfoList()){
            
                    //player = new QMediaPlayer(this,QMediaPlayer::VideoSurface);
                    //player = new QVector<QMediaPlayer*>();
                    //playlist = new QMediaPlaylist;
                    // playlist->addMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                    //mediaPlayer = new QMediaPlayer();
                    mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                    // mediaPlayer->setMedia(playlist);
                    videoItem = new QGraphicsVideoItem;
                    //videoItem->setSize(QSize(320,240));
                    QGraphicsScene *scene = new QGraphicsScene(this);
                    QGraphicsView *graphicsView = new QGraphicsView(scene);
                    scene->addItem(videoItem);
            
                    mediaPlayer->setVideoOutput(videoItem);
                    player.append(mediaPlayer);
            
            
                    m_playButton = new QPushButton;
                    m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
            
            
                    m_positionSlider = new QSlider(Qt::Horizontal);
                    m_positionSlider->setRange(0, 0);
                    connect(m_playButton, &QAbstractButton::clicked, this, &MainWindow::play);
                    connect(m_positionSlider, &QAbstractSlider::sliderMoved,this, &MainWindow::setPosition);
            
                    connect(mediaPlayer, &QMediaPlayer::stateChanged, this, &MainWindow::mediaStateChanged);
                    connect(mediaPlayer, &QMediaPlayer::positionChanged, this, &MainWindow::positionChanged);
                    connect(mediaPlayer, &QMediaPlayer::durationChanged, this, &MainWindow::durationChanged);
            
                    auto    item = new QListWidgetItem("", ui->listWidget);
                    auto    widget = new QWidget;
                    auto    label = new QLabel(finfo.fileName());
                    auto    vb = new QVBoxLayout;
            
                    QBoxLayout *controlLayout = new QHBoxLayout;
                    controlLayout->setMargin(0);
                    controlLayout->addWidget(m_playButton);
                    controlLayout->addWidget(m_positionSlider);
            
                    vb->addWidget(label,1);
                    vb->addWidget(graphicsView,9);
                    vb->addLayout(controlLayout);
                    widget->setLayout(vb);
                    widget->setMinimumSize(340, 340);
                    ui->listWidget->setItemWidget(item,widget);
            
            
                }
            
            }
            
            
            J Online
            J Online
            jsulm
            Lifetime Qt Champion
            wrote on 3 Jul 2018, 04:16 last edited by
            #7

            @Kinesis Sorry, but this is not what I suggested, not at all. Why do you use SAME QMediaPlayer for all videos?
            What you are currently doing is: you're using the SAME QMediaPlayer for all the video files! This is not going to do what you expect it to do. And I don't see any need to have mediaPlayer as global variable.
            I post the code here once more:

            for(const QFileInfo & finfo: directory.entryInfoList()){
                QMediaPlayer *mediaPlayer = new QMediaPlayer(); // You need to create one for each video as you want to show all at the same time, right?
                mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
            ...
                mediaPlayer->setVideoOutput(m_videoItem);
                m_mediaPlayer.append(mediaPlayer);
            

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            K 1 Reply Last reply 3 Jul 2018, 04:38
            1
            • J jsulm
              3 Jul 2018, 04:16

              @Kinesis Sorry, but this is not what I suggested, not at all. Why do you use SAME QMediaPlayer for all videos?
              What you are currently doing is: you're using the SAME QMediaPlayer for all the video files! This is not going to do what you expect it to do. And I don't see any need to have mediaPlayer as global variable.
              I post the code here once more:

              for(const QFileInfo & finfo: directory.entryInfoList()){
                  QMediaPlayer *mediaPlayer = new QMediaPlayer(); // You need to create one for each video as you want to show all at the same time, right?
                  mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
              ...
                  mediaPlayer->setVideoOutput(m_videoItem);
                  m_mediaPlayer.append(mediaPlayer);
              
              K Offline
              K Offline
              Kinesis
              wrote on 3 Jul 2018, 04:38 last edited by
              #8

              @jsulm
              AHH , OK .
              But what should I do about slots . I am using slots to play and pause functions . Slots need mediaPlayer to link with actions. In that case *mediaPlayer is not member variable . So I can't use *mediaPlayer in slots. What should I do?

              J 1 Reply Last reply 3 Jul 2018, 04:40
              0
              • K Kinesis
                3 Jul 2018, 04:38

                @jsulm
                AHH , OK .
                But what should I do about slots . I am using slots to play and pause functions . Slots need mediaPlayer to link with actions. In that case *mediaPlayer is not member variable . So I can't use *mediaPlayer in slots. What should I do?

                J Online
                J Online
                jsulm
                Lifetime Qt Champion
                wrote on 3 Jul 2018, 04:40 last edited by
                #9

                @Kinesis What is the problem with connect()? You have the pointer to QMediaPlayer inside the loop where you call connect():

                for(const QFileInfo & finfo: directory.entryInfoList()){
                    QMediaPlayer *mediaPlayer = new QMediaPlayer(); // You need to create one for each video as you want to show all at the same time, right?
                    mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                    connect(mediaPlayer, &QMediaPlayer::stateChanged, this, &MainWindow::mediaStateChanged);
                ...
                    mediaPlayer->setVideoOutput(m_videoItem);
                    m_mediaPlayer.append(mediaPlayer);
                
                

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                K 1 Reply Last reply 3 Jul 2018, 04:49
                1
                • J jsulm
                  3 Jul 2018, 04:40

                  @Kinesis What is the problem with connect()? You have the pointer to QMediaPlayer inside the loop where you call connect():

                  for(const QFileInfo & finfo: directory.entryInfoList()){
                      QMediaPlayer *mediaPlayer = new QMediaPlayer(); // You need to create one for each video as you want to show all at the same time, right?
                      mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                      connect(mediaPlayer, &QMediaPlayer::stateChanged, this, &MainWindow::mediaStateChanged);
                  ...
                      mediaPlayer->setVideoOutput(m_videoItem);
                      m_mediaPlayer.append(mediaPlayer);
                  
                  
                  K Offline
                  K Offline
                  Kinesis
                  wrote on 3 Jul 2018, 04:49 last edited by
                  #10

                  @jsulm
                  It keeps showing "error: use of undeclared identifier 'mediaPlayer' " like in this slot

                  void MainWindow::play()
                  {
                      switch (mediaPlayer->state()) {
                      case QMediaPlayer::PlayingState:
                          mediaPlayer->pause();
                          break;
                      default:
                          mediaPlayer->play();
                          break;
                      }
                  }
                  
                  J 1 Reply Last reply 3 Jul 2018, 04:53
                  0
                  • K Kinesis
                    3 Jul 2018, 04:49

                    @jsulm
                    It keeps showing "error: use of undeclared identifier 'mediaPlayer' " like in this slot

                    void MainWindow::play()
                    {
                        switch (mediaPlayer->state()) {
                        case QMediaPlayer::PlayingState:
                            mediaPlayer->pause();
                            break;
                        default:
                            mediaPlayer->play();
                            break;
                        }
                    }
                    
                    J Online
                    J Online
                    jsulm
                    Lifetime Qt Champion
                    wrote on 3 Jul 2018, 04:53 last edited by jsulm 7 Mar 2018, 04:54
                    #11

                    @Kinesis And how is this related to connect() call?
                    You need to understand: you have MANY media players, not just one. You put all of them in a list. That means if user presses play you need to get the one media player user wants to play. And then use this player.
                    Something like:

                    void MainWindow::play()
                    {
                        QMediaPlayer *mediaPlayer = player[currentIndex];
                        switch (mediaPlayer->state()) {
                        case QMediaPlayer::PlayingState:
                            mediaPlayer->pause();
                            break;
                        default:
                            mediaPlayer->play();
                            break;
                        }
                    }
                    

                    I don't know how to determine the value of currentIndex, as I don't know much about your app.

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    K 1 Reply Last reply 3 Jul 2018, 05:06
                    3
                    • J jsulm
                      3 Jul 2018, 04:53

                      @Kinesis And how is this related to connect() call?
                      You need to understand: you have MANY media players, not just one. You put all of them in a list. That means if user presses play you need to get the one media player user wants to play. And then use this player.
                      Something like:

                      void MainWindow::play()
                      {
                          QMediaPlayer *mediaPlayer = player[currentIndex];
                          switch (mediaPlayer->state()) {
                          case QMediaPlayer::PlayingState:
                              mediaPlayer->pause();
                              break;
                          default:
                              mediaPlayer->play();
                              break;
                          }
                      }
                      

                      I don't know how to determine the value of currentIndex, as I don't know much about your app.

                      K Offline
                      K Offline
                      Kinesis
                      wrote on 3 Jul 2018, 05:06 last edited by
                      #12

                      @jsulm
                      Its seem like it will work this time. How can I determine the value of currentIndex?

                      J 1 Reply Last reply 3 Jul 2018, 05:10
                      0
                      • K Kinesis
                        3 Jul 2018, 05:06

                        @jsulm
                        Its seem like it will work this time. How can I determine the value of currentIndex?

                        J Online
                        J Online
                        jsulm
                        Lifetime Qt Champion
                        wrote on 3 Jul 2018, 05:10 last edited by jsulm 7 Mar 2018, 05:11
                        #13

                        @Kinesis "How can I determine the value of currentIndex?" - as I said - I don't know.
                        How does the user select the video to play?

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        K 1 Reply Last reply 3 Jul 2018, 05:20
                        0
                        • J jsulm
                          3 Jul 2018, 05:10

                          @Kinesis "How can I determine the value of currentIndex?" - as I said - I don't know.
                          How does the user select the video to play?

                          K Offline
                          K Offline
                          Kinesis
                          wrote on 3 Jul 2018, 05:20 last edited by
                          #14

                          @jsulm
                          I found that the buttons are linking each other . If I press the play button of 1st video It also play second video . How can I fix that .

                          J 1 Reply Last reply 3 Jul 2018, 05:28
                          0
                          • K Kinesis
                            3 Jul 2018, 05:20

                            @jsulm
                            I found that the buttons are linking each other . If I press the play button of 1st video It also play second video . How can I fix that .

                            J Online
                            J Online
                            jsulm
                            Lifetime Qt Champion
                            wrote on 3 Jul 2018, 05:28 last edited by jsulm 7 Mar 2018, 05:36
                            #15

                            @Kinesis You could use lambda (C++11: https://en.cppreference.com/w/cpp/language/lambda):

                            connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                            switch (mediaPlayer->state()) {
                            case QMediaPlayer::PlayingState:
                                mediaPlayer->pause();
                                break;
                            default:
                                mediaPlayer->play();
                                break;
                            }
                            });
                            

                            https://forum.qt.io/topic/113070/qt-code-of-conduct

                            K 1 Reply Last reply 3 Jul 2018, 06:27
                            3
                            • J jsulm
                              3 Jul 2018, 05:28

                              @Kinesis You could use lambda (C++11: https://en.cppreference.com/w/cpp/language/lambda):

                              connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                              switch (mediaPlayer->state()) {
                              case QMediaPlayer::PlayingState:
                                  mediaPlayer->pause();
                                  break;
                              default:
                                  mediaPlayer->play();
                                  break;
                              }
                              });
                              
                              K Offline
                              K Offline
                              Kinesis
                              wrote on 3 Jul 2018, 06:27 last edited by
                              #16

                              @jsulm
                              Thanks . now the buttons are not linked any more. But my first problem is back . I can't play all videos . I can just play 1 video(last video) when I load 2 videos , I can't play any videos when i load more than 2 . I don't know what to do now . I am really stuck at this stage for 4 days. I really appreciate your help for helping until now.

                              J 1 Reply Last reply 3 Jul 2018, 06:33
                              0
                              • S Offline
                                S Offline
                                SGaist
                                Lifetime Qt Champion
                                wrote on 3 Jul 2018, 06:31 last edited by
                                #17

                                Are your buttons supposed to control all video players at once ? If so, then do it as I suggested and go it iterate through the vector of players and control them all.

                                If you want to control each player separately then you have have to create as many buttons as players.

                                Interested in AI ? www.idiap.ch
                                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                J 1 Reply Last reply 3 Jul 2018, 06:34
                                2
                                • K Kinesis
                                  3 Jul 2018, 06:27

                                  @jsulm
                                  Thanks . now the buttons are not linked any more. But my first problem is back . I can't play all videos . I can just play 1 video(last video) when I load 2 videos , I can't play any videos when i load more than 2 . I don't know what to do now . I am really stuck at this stage for 4 days. I really appreciate your help for helping until now.

                                  J Online
                                  J Online
                                  jsulm
                                  Lifetime Qt Champion
                                  wrote on 3 Jul 2018, 06:33 last edited by
                                  #18

                                  @Kinesis said in Media player not working for multiple videos:

                                  I can just play 1 video(last video)

                                  Sounds like you still use global mediaPlayer - do you?
                                  Did you change the code as I suggested?

                                  for(const QFileInfo & finfo: directory.entryInfoList()){
                                      QMediaPlayer *mediaPlayer = new QMediaPlayer(); // DO NOT USE GLOBAL mediaPlayer!
                                      mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                                  ...
                                      connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                                          switch (mediaPlayer->state()) {
                                          case QMediaPlayer::PlayingState:
                                              mediaPlayer->pause();
                                              break;
                                          default:
                                              mediaPlayer->play();
                                              break;
                                      }
                                      });
                                  ...
                                      mediaPlayer->setVideoOutput(m_videoItem);
                                      m_mediaPlayer.append(mediaPlayer);
                                  

                                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                                  K 1 Reply Last reply 3 Jul 2018, 06:41
                                  0
                                  • S SGaist
                                    3 Jul 2018, 06:31

                                    Are your buttons supposed to control all video players at once ? If so, then do it as I suggested and go it iterate through the vector of players and control them all.

                                    If you want to control each player separately then you have have to create as many buttons as players.

                                    J Online
                                    J Online
                                    jsulm
                                    Lifetime Qt Champion
                                    wrote on 3 Jul 2018, 06:34 last edited by
                                    #19

                                    @SGaist He creates one button for each video

                                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                                    1 Reply Last reply
                                    0
                                    • J jsulm
                                      3 Jul 2018, 06:33

                                      @Kinesis said in Media player not working for multiple videos:

                                      I can just play 1 video(last video)

                                      Sounds like you still use global mediaPlayer - do you?
                                      Did you change the code as I suggested?

                                      for(const QFileInfo & finfo: directory.entryInfoList()){
                                          QMediaPlayer *mediaPlayer = new QMediaPlayer(); // DO NOT USE GLOBAL mediaPlayer!
                                          mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                                      ...
                                          connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                                              switch (mediaPlayer->state()) {
                                              case QMediaPlayer::PlayingState:
                                                  mediaPlayer->pause();
                                                  break;
                                              default:
                                                  mediaPlayer->play();
                                                  break;
                                          }
                                          });
                                      ...
                                          mediaPlayer->setVideoOutput(m_videoItem);
                                          m_mediaPlayer.append(mediaPlayer);
                                      
                                      K Offline
                                      K Offline
                                      Kinesis
                                      wrote on 3 Jul 2018, 06:41 last edited by
                                      #20

                                      @jsulm
                                      I am not using mediaPlayer as global variable . Here is my updated code

                                      MainWindow::MainWindow(QWidget *parent) :
                                          QMainWindow(parent),
                                          ui(new Ui::MainWindow)
                                      {
                                          ui->setupUi(this);
                                      
                                          ui->listWidget->setFlow(QListView::LeftToRight);
                                          ui->listWidget->setMinimumSize(760,350);
                                          ui->listWidget->setGridSize(QSize(360, 360));
                                          ui->listWidget->setResizeMode(QListView::Adjust);
                                          ui->listWidget->setViewMode(QListView::ListMode);
                                          ui->listWidget->setWrapping(true);
                                      
                                          QDir directory = QFileDialog::getExistingDirectory(this, tr("Open Directory"),"/home",
                                      
                                                                                             QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
                                      
                                          directory.setNameFilters({"*.mp4" , "*.avi" , "*.flv" , "*.mwv"});
                                      
                                          for(const QFileInfo & finfo: directory.entryInfoList()){
                                              QMediaPlayer *mediaPlayer = new QMediaPlayer();
                                              //player = new QMediaPlayer(this,QMediaPlayer::VideoSurface);
                                              //player = new QVector<QMediaPlayer*>();
                                              //playlist = new QMediaPlaylist;
                                              // playlist->addMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                                              //mediaPlayer = new QMediaPlayer();
                                              mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                                              // mediaPlayer->setMedia(playlist);
                                              videoItem = new QGraphicsVideoItem;
                                              //videoItem->setSize(QSize(320,240));
                                              QGraphicsScene *scene = new QGraphicsScene(this);
                                              QGraphicsView *graphicsView = new QGraphicsView(scene);
                                              scene->addItem(videoItem);
                                      
                                              mediaPlayer->setVideoOutput(videoItem);
                                              player.append(mediaPlayer);
                                      
                                              connect(mediaPlayer, &QMediaPlayer::stateChanged, this, &MainWindow::mediaStateChanged);
                                              connect(mediaPlayer, &QMediaPlayer::positionChanged, this, &MainWindow::positionChanged);
                                              connect(mediaPlayer, &QMediaPlayer::durationChanged, this, &MainWindow::durationChanged);
                                      
                                              m_playButton = new QPushButton;
                                              m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
                                      
                                      
                                              m_positionSlider = new QSlider(Qt::Horizontal);
                                              m_positionSlider->setRange(0, 0);
                                              connect(m_playButton, &QAbstractButton::clicked, this, &MainWindow::play);
                                              connect(m_positionSlider, &QAbstractSlider::sliderMoved,this, &MainWindow::setPosition);
                                      
                                      
                                      
                                              auto    item = new QListWidgetItem("", ui->listWidget);
                                              auto    widget = new QWidget;
                                              auto    label = new QLabel(finfo.fileName());
                                              auto    vb = new QVBoxLayout;
                                      
                                              QBoxLayout *controlLayout = new QHBoxLayout;
                                              controlLayout->setMargin(0);
                                              controlLayout->addWidget(m_playButton);
                                              controlLayout->addWidget(m_positionSlider);
                                      
                                              vb->addWidget(label,1);
                                              vb->addWidget(graphicsView,9);
                                              vb->addLayout(controlLayout);
                                              widget->setLayout(vb);
                                              widget->setMinimumSize(340, 340);
                                              ui->listWidget->setItemWidget(item,widget);
                                      
                                      
                                          }
                                          
                                      
                                      
                                      }
                                      MainWindow::~MainWindow()
                                      {
                                          delete ui;
                                      }
                                      QSize MainWindow::sizeHint() const
                                      {
                                          return (videoItem->size() * qreal(3) / qreal(2)).toSize();
                                      }
                                      
                                      bool MainWindow::isPlayerAvailable() const
                                      {   QMediaPlayer *mediaPlayer = player[1];
                                          return mediaPlayer->isAvailable();
                                      }
                                      
                                      
                                      
                                      void MainWindow::play()
                                      {
                                          QMediaPlayer *mediaPlayer = player[1];
                                          connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                                          switch (mediaPlayer->state()) {
                                          case QMediaPlayer::PlayingState:
                                              mediaPlayer->pause();
                                              break;
                                          default:
                                              mediaPlayer->play();
                                              break;
                                          }
                                      });
                                      }
                                      
                                      void MainWindow::mediaStateChanged(QMediaPlayer::State state)
                                      {
                                          switch(state) {
                                          case QMediaPlayer::PlayingState:
                                              m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPause));
                                              break;
                                          default:
                                              m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
                                              break;
                                          }
                                      }
                                      
                                      void MainWindow::positionChanged(qint64 position)
                                      {
                                          m_positionSlider->setValue(position);
                                      }
                                      
                                      void MainWindow::durationChanged(qint64 duration)
                                      {
                                          m_positionSlider->setRange(0, duration);
                                      }
                                      
                                      void MainWindow::setPosition(int position)
                                      {
                                          QMediaPlayer *mediaPlayer = player[1];
                                          mediaPlayer->setPosition(position);
                                      }
                                      
                                      J.HilkJ J 2 Replies Last reply 3 Jul 2018, 06:53
                                      0
                                      • K Kinesis
                                        3 Jul 2018, 06:41

                                        @jsulm
                                        I am not using mediaPlayer as global variable . Here is my updated code

                                        MainWindow::MainWindow(QWidget *parent) :
                                            QMainWindow(parent),
                                            ui(new Ui::MainWindow)
                                        {
                                            ui->setupUi(this);
                                        
                                            ui->listWidget->setFlow(QListView::LeftToRight);
                                            ui->listWidget->setMinimumSize(760,350);
                                            ui->listWidget->setGridSize(QSize(360, 360));
                                            ui->listWidget->setResizeMode(QListView::Adjust);
                                            ui->listWidget->setViewMode(QListView::ListMode);
                                            ui->listWidget->setWrapping(true);
                                        
                                            QDir directory = QFileDialog::getExistingDirectory(this, tr("Open Directory"),"/home",
                                        
                                                                                               QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
                                        
                                            directory.setNameFilters({"*.mp4" , "*.avi" , "*.flv" , "*.mwv"});
                                        
                                            for(const QFileInfo & finfo: directory.entryInfoList()){
                                                QMediaPlayer *mediaPlayer = new QMediaPlayer();
                                                //player = new QMediaPlayer(this,QMediaPlayer::VideoSurface);
                                                //player = new QVector<QMediaPlayer*>();
                                                //playlist = new QMediaPlaylist;
                                                // playlist->addMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                                                //mediaPlayer = new QMediaPlayer();
                                                mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                                                // mediaPlayer->setMedia(playlist);
                                                videoItem = new QGraphicsVideoItem;
                                                //videoItem->setSize(QSize(320,240));
                                                QGraphicsScene *scene = new QGraphicsScene(this);
                                                QGraphicsView *graphicsView = new QGraphicsView(scene);
                                                scene->addItem(videoItem);
                                        
                                                mediaPlayer->setVideoOutput(videoItem);
                                                player.append(mediaPlayer);
                                        
                                                connect(mediaPlayer, &QMediaPlayer::stateChanged, this, &MainWindow::mediaStateChanged);
                                                connect(mediaPlayer, &QMediaPlayer::positionChanged, this, &MainWindow::positionChanged);
                                                connect(mediaPlayer, &QMediaPlayer::durationChanged, this, &MainWindow::durationChanged);
                                        
                                                m_playButton = new QPushButton;
                                                m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
                                        
                                        
                                                m_positionSlider = new QSlider(Qt::Horizontal);
                                                m_positionSlider->setRange(0, 0);
                                                connect(m_playButton, &QAbstractButton::clicked, this, &MainWindow::play);
                                                connect(m_positionSlider, &QAbstractSlider::sliderMoved,this, &MainWindow::setPosition);
                                        
                                        
                                        
                                                auto    item = new QListWidgetItem("", ui->listWidget);
                                                auto    widget = new QWidget;
                                                auto    label = new QLabel(finfo.fileName());
                                                auto    vb = new QVBoxLayout;
                                        
                                                QBoxLayout *controlLayout = new QHBoxLayout;
                                                controlLayout->setMargin(0);
                                                controlLayout->addWidget(m_playButton);
                                                controlLayout->addWidget(m_positionSlider);
                                        
                                                vb->addWidget(label,1);
                                                vb->addWidget(graphicsView,9);
                                                vb->addLayout(controlLayout);
                                                widget->setLayout(vb);
                                                widget->setMinimumSize(340, 340);
                                                ui->listWidget->setItemWidget(item,widget);
                                        
                                        
                                            }
                                            
                                        
                                        
                                        }
                                        MainWindow::~MainWindow()
                                        {
                                            delete ui;
                                        }
                                        QSize MainWindow::sizeHint() const
                                        {
                                            return (videoItem->size() * qreal(3) / qreal(2)).toSize();
                                        }
                                        
                                        bool MainWindow::isPlayerAvailable() const
                                        {   QMediaPlayer *mediaPlayer = player[1];
                                            return mediaPlayer->isAvailable();
                                        }
                                        
                                        
                                        
                                        void MainWindow::play()
                                        {
                                            QMediaPlayer *mediaPlayer = player[1];
                                            connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                                            switch (mediaPlayer->state()) {
                                            case QMediaPlayer::PlayingState:
                                                mediaPlayer->pause();
                                                break;
                                            default:
                                                mediaPlayer->play();
                                                break;
                                            }
                                        });
                                        }
                                        
                                        void MainWindow::mediaStateChanged(QMediaPlayer::State state)
                                        {
                                            switch(state) {
                                            case QMediaPlayer::PlayingState:
                                                m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPause));
                                                break;
                                            default:
                                                m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
                                                break;
                                            }
                                        }
                                        
                                        void MainWindow::positionChanged(qint64 position)
                                        {
                                            m_positionSlider->setValue(position);
                                        }
                                        
                                        void MainWindow::durationChanged(qint64 duration)
                                        {
                                            m_positionSlider->setRange(0, duration);
                                        }
                                        
                                        void MainWindow::setPosition(int position)
                                        {
                                            QMediaPlayer *mediaPlayer = player[1];
                                            mediaPlayer->setPosition(position);
                                        }
                                        
                                        J.HilkJ Offline
                                        J.HilkJ Offline
                                        J.Hilk
                                        Moderators
                                        wrote on 3 Jul 2018, 06:53 last edited by
                                        #21

                                        @Kinesis
                                        your still not doing what @jsulm suggested.

                                        this

                                        void MainWindow::play()
                                        {
                                            QMediaPlayer *mediaPlayer = player[1];
                                            connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                                            switch (mediaPlayer->state()) {
                                            case QMediaPlayer::PlayingState:
                                                mediaPlayer->pause();
                                                break;
                                            default:
                                                mediaPlayer->play();
                                                break;
                                            }
                                        });
                                        }
                                        

                                        is wrong and at the wrong place

                                        delete that function all together

                                        and in your loop replace

                                        connect(m_playButton, &QAbstractButton::clicked, this, &MainWindow::play);
                                        

                                        with

                                        @jsulm said in Media player not working for multiple videos:

                                        connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                                            switch (mediaPlayer->state()) {
                                            case QMediaPlayer::PlayingState:
                                                mediaPlayer->pause();
                                                break;
                                            default:
                                                mediaPlayer->play();
                                                break;
                                        }
                                        });
                                        

                                        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                                        Q: What's that?
                                        A: It's blue light.
                                        Q: What does it do?
                                        A: It turns blue.

                                        1 Reply Last reply
                                        3
                                        • K Kinesis
                                          3 Jul 2018, 06:41

                                          @jsulm
                                          I am not using mediaPlayer as global variable . Here is my updated code

                                          MainWindow::MainWindow(QWidget *parent) :
                                              QMainWindow(parent),
                                              ui(new Ui::MainWindow)
                                          {
                                              ui->setupUi(this);
                                          
                                              ui->listWidget->setFlow(QListView::LeftToRight);
                                              ui->listWidget->setMinimumSize(760,350);
                                              ui->listWidget->setGridSize(QSize(360, 360));
                                              ui->listWidget->setResizeMode(QListView::Adjust);
                                              ui->listWidget->setViewMode(QListView::ListMode);
                                              ui->listWidget->setWrapping(true);
                                          
                                              QDir directory = QFileDialog::getExistingDirectory(this, tr("Open Directory"),"/home",
                                          
                                                                                                 QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);
                                          
                                              directory.setNameFilters({"*.mp4" , "*.avi" , "*.flv" , "*.mwv"});
                                          
                                              for(const QFileInfo & finfo: directory.entryInfoList()){
                                                  QMediaPlayer *mediaPlayer = new QMediaPlayer();
                                                  //player = new QMediaPlayer(this,QMediaPlayer::VideoSurface);
                                                  //player = new QVector<QMediaPlayer*>();
                                                  //playlist = new QMediaPlaylist;
                                                  // playlist->addMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                                                  //mediaPlayer = new QMediaPlayer();
                                                  mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                                                  // mediaPlayer->setMedia(playlist);
                                                  videoItem = new QGraphicsVideoItem;
                                                  //videoItem->setSize(QSize(320,240));
                                                  QGraphicsScene *scene = new QGraphicsScene(this);
                                                  QGraphicsView *graphicsView = new QGraphicsView(scene);
                                                  scene->addItem(videoItem);
                                          
                                                  mediaPlayer->setVideoOutput(videoItem);
                                                  player.append(mediaPlayer);
                                          
                                                  connect(mediaPlayer, &QMediaPlayer::stateChanged, this, &MainWindow::mediaStateChanged);
                                                  connect(mediaPlayer, &QMediaPlayer::positionChanged, this, &MainWindow::positionChanged);
                                                  connect(mediaPlayer, &QMediaPlayer::durationChanged, this, &MainWindow::durationChanged);
                                          
                                                  m_playButton = new QPushButton;
                                                  m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
                                          
                                          
                                                  m_positionSlider = new QSlider(Qt::Horizontal);
                                                  m_positionSlider->setRange(0, 0);
                                                  connect(m_playButton, &QAbstractButton::clicked, this, &MainWindow::play);
                                                  connect(m_positionSlider, &QAbstractSlider::sliderMoved,this, &MainWindow::setPosition);
                                          
                                          
                                          
                                                  auto    item = new QListWidgetItem("", ui->listWidget);
                                                  auto    widget = new QWidget;
                                                  auto    label = new QLabel(finfo.fileName());
                                                  auto    vb = new QVBoxLayout;
                                          
                                                  QBoxLayout *controlLayout = new QHBoxLayout;
                                                  controlLayout->setMargin(0);
                                                  controlLayout->addWidget(m_playButton);
                                                  controlLayout->addWidget(m_positionSlider);
                                          
                                                  vb->addWidget(label,1);
                                                  vb->addWidget(graphicsView,9);
                                                  vb->addLayout(controlLayout);
                                                  widget->setLayout(vb);
                                                  widget->setMinimumSize(340, 340);
                                                  ui->listWidget->setItemWidget(item,widget);
                                          
                                          
                                              }
                                              
                                          
                                          
                                          }
                                          MainWindow::~MainWindow()
                                          {
                                              delete ui;
                                          }
                                          QSize MainWindow::sizeHint() const
                                          {
                                              return (videoItem->size() * qreal(3) / qreal(2)).toSize();
                                          }
                                          
                                          bool MainWindow::isPlayerAvailable() const
                                          {   QMediaPlayer *mediaPlayer = player[1];
                                              return mediaPlayer->isAvailable();
                                          }
                                          
                                          
                                          
                                          void MainWindow::play()
                                          {
                                              QMediaPlayer *mediaPlayer = player[1];
                                              connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                                              switch (mediaPlayer->state()) {
                                              case QMediaPlayer::PlayingState:
                                                  mediaPlayer->pause();
                                                  break;
                                              default:
                                                  mediaPlayer->play();
                                                  break;
                                              }
                                          });
                                          }
                                          
                                          void MainWindow::mediaStateChanged(QMediaPlayer::State state)
                                          {
                                              switch(state) {
                                              case QMediaPlayer::PlayingState:
                                                  m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPause));
                                                  break;
                                              default:
                                                  m_playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay));
                                                  break;
                                              }
                                          }
                                          
                                          void MainWindow::positionChanged(qint64 position)
                                          {
                                              m_positionSlider->setValue(position);
                                          }
                                          
                                          void MainWindow::durationChanged(qint64 duration)
                                          {
                                              m_positionSlider->setRange(0, duration);
                                          }
                                          
                                          void MainWindow::setPosition(int position)
                                          {
                                              QMediaPlayer *mediaPlayer = player[1];
                                              mediaPlayer->setPosition(position);
                                          }
                                          
                                          J Online
                                          J Online
                                          jsulm
                                          Lifetime Qt Champion
                                          wrote on 3 Jul 2018, 06:54 last edited by
                                          #22

                                          @Kinesis You should think about the code you're writing and you should read what I'm writing more carefully. To be honest I'm tired of writing code for you and then see that you're not trying it but doing something else. The code you posted now is NOT what I suggested (again).

                                          void MainWindow::play()
                                          {
                                              QMediaPlayer *mediaPlayer = player[1];
                                          

                                          Do you really think this code can work correctly? You always try to use SECOND player! How is it going to work?!
                                          I post here my code once more, but for the last time:

                                          for(const QFileInfo & finfo: directory.entryInfoList()){
                                              QMediaPlayer *mediaPlayer = new QMediaPlayer(); // DO NOT USE GLOBAL mediaPlayer!
                                              mediaPlayer->setMedia(QUrl::fromLocalFile(finfo.absoluteFilePath()));
                                          ...
                                              connect(m_playButton, &QAbstractButton::clicked, [mediaPlayer]() {
                                                  switch (mediaPlayer->state()) {
                                                  case QMediaPlayer::PlayingState:
                                                      mediaPlayer->pause();
                                                      break;
                                                  default:
                                                      mediaPlayer->play();
                                                      break;
                                              }
                                              });
                                          ...
                                              mediaPlayer->setVideoOutput(m_videoItem);
                                              m_mediaPlayer.append(mediaPlayer);
                                          

                                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                                          K 1 Reply Last reply 3 Jul 2018, 07:18
                                          5

                                          12/41

                                          3 Jul 2018, 05:06

                                          29 unread
                                          • Login

                                          • Login or register to search.
                                          12 out of 41
                                          • First post
                                            12/41
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved