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. Graphics view
Forum Updated to NodeBB v4.3 + New Features

Graphics view

Scheduled Pinned Locked Moved Solved General and Desktop
3 Posts 3 Posters 266 Views
  • 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.
  • R Offline
    R Offline
    Rockerz
    wrote on last edited by Rockerz
    #1

    I have doubt ie. How to play video file on graphics view , Added all video files in single folder and give it name as Sample videos . I used list widget to display all video files with extension in this code . It displays all video files and when video item clicked video is played , code is crashed what is the reason for that?

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    QString folderpath;
    QStringList videoPaths;
    QMediaPlayer *player;
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        ui->stackedWidget->setCurrentIndex(0);
        player = new QMediaPlayer;
     folderpath="C:/Users/admin/Desktop/Sample videos";
        QDir shortcutsFolder1(folderpath);
        QFileInfoList shortcuts(shortcutsFolder1.entryInfoList(QDir::Files, QDir::Name | QDir::IgnoreCase));
        foreach (QFileInfo fi, shortcuts)
        {
            QString videoPath = folderpath + "/" + fi.fileName();
            QString ext = fi.suffix().toLower();
            if (ext == "mp4" || ext == "avi" || ext == "mkv" ||ext == "wmv" || ext == "webm")
            {
                videoPaths.append(videoPath);
                QListWidgetItem *item = new QListWidgetItem(fi.fileName());
                item->setIcon(QIcon(QPixmap("‪H:/Qt_5.15.2/Demo/video-icon-6.png").scaled(150, 125, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)));
                ui->listWidget->addItem(item);
            }
        }
        ui->listWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
    
    }
    void MainWindow::on_listWidget_itemClicked(QListWidgetItem *clickedItem)
    {
        int index = ui->listWidget->row(clickedItem);
    
        QString videoPath = videoPaths[index];
    
        if (player)
        {
            player->stop();
            delete player;
        }
    
        player = new QMediaPlayer;
        QGraphicsVideoItem *videoItem = new QGraphicsVideoItem;
    
        QGraphicsScene *scene = new QGraphicsScene(this);
        scene->addItem(videoItem);
    
        ui->graphicsView->setScene(scene);
        ui->graphicsView->setRenderHint(QPainter::Antialiasing, true);
    
        player->setVideoOutput(videoItem);
    
        QPixmap pixmap("H:/Qt_5.15.2/Demo/video-icon-6.png");
        if (!pixmap.isNull())
        {
            QPixmap scaledPixmap = pixmap.scaled(150, 125, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
            clickedItem->setIcon(QIcon(scaledPixmap));  
        }
        else
        {
            qDebug() << "Error loading QPixmap";
        }
    
        player->setMedia(QUrl::fromLocalFile(videoPath));
    
        connect(player, &QMediaPlayer::stateChanged, this, &MainWindow::on_Playpause_pushButton_clicked);
    
        player->play();
    }
    
    
    Christian EhrlicherC W 2 Replies Last reply
    0
    • R Rockerz

      I have doubt ie. How to play video file on graphics view , Added all video files in single folder and give it name as Sample videos . I used list widget to display all video files with extension in this code . It displays all video files and when video item clicked video is played , code is crashed what is the reason for that?

      #include "mainwindow.h"
      #include "ui_mainwindow.h"
      
      QString folderpath;
      QStringList videoPaths;
      QMediaPlayer *player;
      
      MainWindow::MainWindow(QWidget *parent)
          : QMainWindow(parent)
          , ui(new Ui::MainWindow)
      {
          ui->setupUi(this);
          ui->stackedWidget->setCurrentIndex(0);
          player = new QMediaPlayer;
       folderpath="C:/Users/admin/Desktop/Sample videos";
          QDir shortcutsFolder1(folderpath);
          QFileInfoList shortcuts(shortcutsFolder1.entryInfoList(QDir::Files, QDir::Name | QDir::IgnoreCase));
          foreach (QFileInfo fi, shortcuts)
          {
              QString videoPath = folderpath + "/" + fi.fileName();
              QString ext = fi.suffix().toLower();
              if (ext == "mp4" || ext == "avi" || ext == "mkv" ||ext == "wmv" || ext == "webm")
              {
                  videoPaths.append(videoPath);
                  QListWidgetItem *item = new QListWidgetItem(fi.fileName());
                  item->setIcon(QIcon(QPixmap("‪H:/Qt_5.15.2/Demo/video-icon-6.png").scaled(150, 125, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)));
                  ui->listWidget->addItem(item);
              }
          }
          ui->listWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
      
      }
      void MainWindow::on_listWidget_itemClicked(QListWidgetItem *clickedItem)
      {
          int index = ui->listWidget->row(clickedItem);
      
          QString videoPath = videoPaths[index];
      
          if (player)
          {
              player->stop();
              delete player;
          }
      
          player = new QMediaPlayer;
          QGraphicsVideoItem *videoItem = new QGraphicsVideoItem;
      
          QGraphicsScene *scene = new QGraphicsScene(this);
          scene->addItem(videoItem);
      
          ui->graphicsView->setScene(scene);
          ui->graphicsView->setRenderHint(QPainter::Antialiasing, true);
      
          player->setVideoOutput(videoItem);
      
          QPixmap pixmap("H:/Qt_5.15.2/Demo/video-icon-6.png");
          if (!pixmap.isNull())
          {
              QPixmap scaledPixmap = pixmap.scaled(150, 125, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
              clickedItem->setIcon(QIcon(scaledPixmap));  
          }
          else
          {
              qDebug() << "Error loading QPixmap";
          }
      
          player->setMedia(QUrl::fromLocalFile(videoPath));
      
          connect(player, &QMediaPlayer::stateChanged, this, &MainWindow::on_Playpause_pushButton_clicked);
      
          player->play();
      }
      
      
      Christian EhrlicherC Offline
      Christian EhrlicherC Offline
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on last edited by
      #2

      As always - when your program is crashing use the debugger to see where and why it is crashing.

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      2
      • R Rockerz

        I have doubt ie. How to play video file on graphics view , Added all video files in single folder and give it name as Sample videos . I used list widget to display all video files with extension in this code . It displays all video files and when video item clicked video is played , code is crashed what is the reason for that?

        #include "mainwindow.h"
        #include "ui_mainwindow.h"
        
        QString folderpath;
        QStringList videoPaths;
        QMediaPlayer *player;
        
        MainWindow::MainWindow(QWidget *parent)
            : QMainWindow(parent)
            , ui(new Ui::MainWindow)
        {
            ui->setupUi(this);
            ui->stackedWidget->setCurrentIndex(0);
            player = new QMediaPlayer;
         folderpath="C:/Users/admin/Desktop/Sample videos";
            QDir shortcutsFolder1(folderpath);
            QFileInfoList shortcuts(shortcutsFolder1.entryInfoList(QDir::Files, QDir::Name | QDir::IgnoreCase));
            foreach (QFileInfo fi, shortcuts)
            {
                QString videoPath = folderpath + "/" + fi.fileName();
                QString ext = fi.suffix().toLower();
                if (ext == "mp4" || ext == "avi" || ext == "mkv" ||ext == "wmv" || ext == "webm")
                {
                    videoPaths.append(videoPath);
                    QListWidgetItem *item = new QListWidgetItem(fi.fileName());
                    item->setIcon(QIcon(QPixmap("‪H:/Qt_5.15.2/Demo/video-icon-6.png").scaled(150, 125, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)));
                    ui->listWidget->addItem(item);
                }
            }
            ui->listWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
        
        }
        void MainWindow::on_listWidget_itemClicked(QListWidgetItem *clickedItem)
        {
            int index = ui->listWidget->row(clickedItem);
        
            QString videoPath = videoPaths[index];
        
            if (player)
            {
                player->stop();
                delete player;
            }
        
            player = new QMediaPlayer;
            QGraphicsVideoItem *videoItem = new QGraphicsVideoItem;
        
            QGraphicsScene *scene = new QGraphicsScene(this);
            scene->addItem(videoItem);
        
            ui->graphicsView->setScene(scene);
            ui->graphicsView->setRenderHint(QPainter::Antialiasing, true);
        
            player->setVideoOutput(videoItem);
        
            QPixmap pixmap("H:/Qt_5.15.2/Demo/video-icon-6.png");
            if (!pixmap.isNull())
            {
                QPixmap scaledPixmap = pixmap.scaled(150, 125, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
                clickedItem->setIcon(QIcon(scaledPixmap));  
            }
            else
            {
                qDebug() << "Error loading QPixmap";
            }
        
            player->setMedia(QUrl::fromLocalFile(videoPath));
        
            connect(player, &QMediaPlayer::stateChanged, this, &MainWindow::on_Playpause_pushButton_clicked);
        
            player->play();
        }
        
        
        W Offline
        W Offline
        wrosecrans
        wrote on last edited by
        #3

        @Rockerz As Christian said, it's always a good idea to do basic debugging before you ask other people to take a look. You'll generally get much more useful feedback when you say things like where it's crashing and what sort of crash it is.

        That said, the QPixmap constructor that takes a const char* doesn't take a filename: https://doc.qt.io/qt-6/qpixmap.html#QPixmap-4 I dunno if that's your issue. But it certainly is one of your issues.

        1 Reply Last reply
        0
        • R Rockerz has marked this topic as solved on

        • Login

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