IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Quick Discussion :

Création d'un visionneur de film


Sujet :

Qt Quick

  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut Création d'un visionneur de film


    Suite à http://www.developpez.net/forums/d15...phonon-python/, voici quelques lignes pour lire une vidéo en QML.

    Citation Envoyé par tyrtamos Voir le message
    Et tu vas finir par y arriver...
    Bon .... comme je te sens encore un peu indécis et que les lignes qui suivent restent dans le domaine du multimédia, voici le code QML modifié pour lire une musique et/ou un film :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    import QtQuick 2.4
    import QtMultimedia 5.0
    import QtQuick.Controls 1.3
    import QtQuick.Layouts 1.1  // Histoire de placer facilement mes composants.
     
    ApplicationWindow {
        width : 800
        height : 600
        GridLayout {
            id: grid
            anchors.fill: parent
            columns :2
            Button {
                text: "Lancer la musique"
                onClicked: playMusic.play()
                Layout.fillWidth: true
            }
            Button {
                text: "Lancer le Film"
                onClicked: video.play()
                Layout.fillWidth: true
            }
     
            Video {
                id: video
                source: "/home/charlie/Movies/Taken.avi"
                Layout.fillHeight: true
                Layout.fillWidth: true
                Layout.columnSpan: grid.columns
     
                // au cas où l'on souhaite lancer la vidéo en cliquant sur l'espace réservé à sa lecture.
                MouseArea {
                    anchors.fill: parent
                    onClicked{
                        video.play()
                    }
                }
            }
     
            Audio {
                id: playMusic
                source: "cosmo.mp3"
            }
        }
    }
    Déconcertant de simplicité !!!!
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Jiyuu Voir le message
    Déconcertant de simplicité !!!!
    Oui, le code est très simple, mais ce qu'on obtient est très très basique!

    En tout cas, ça n'a rien à voir avec le player de l'exemple ici: http://doc.qt.io/qt-5/qtmultimediawi...r-example.html. Il existe d'ailleurs dans les exemples PyQt5: examples/multimediawidgets/player.py

    Penses-tu qu'on pourrait faire un vrai player en qtquick tout en restant simple?
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Un exemple rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    import QtQuick 2.4
    import QtMultimedia 5.0
    import QtQuick.Controls 1.3
    import QtQuick.Layouts 1.1
    import QtQuick.Dialogs 1.1
     
    ApplicationWindow {
        width : 500
        height : 250
     
        GridLayout {
            id: grid
            anchors.fill: parent
            columns :3
     
            Label {
                id: selection
                text: "<b>Pas de film sélectionné</b>"
                Layout.fillWidth: true
                Layout.columnSpan: grid.columns
            }
            Video {
                id: video
                source: "/home/charlie/Movies/Taken.avi"
                volume: volume.value
                Layout.fillHeight: true
                Layout.fillWidth: true
                Layout.columnSpan: grid.columns
                onPlaying: posi.value = video.position
            }
            Label {
                text: "0s"
            }
            Slider {
                id: posi
                stepSize: 1
                maximumValue: video.duration
                Layout.fillWidth: true
                onValueChanged: video.seek(value)
            }
            Label {
                text: "%1s / %2s".arg(Number(video.position/1000).toFixed(2)).arg(Number(video.duration/60).toFixed(0))
            }
            RowLayout {
                Layout.fillWidth: true
                Layout.columnSpan: grid.columns
     
                Button {
                    text: "Ouvrir"
                    Layout.fillWidth: true
                    onClicked{
                        fileDialog.visible = true
                    }
                }
                ToolButton {
                    iconSource: 'stop.png'
                    Layout.fillWidth: true
                    onClicked: video.stop()
                }
     
                Button {
                    text: '<<'
                    Layout.fillWidth: true
                    onClicked: video.seek(video.position-video.duration/100)
                }
     
                ToolButton {
                    iconSource: 'play.png'
                    onClicked: video.play()
                    Layout.fillWidth: true
                }
                Button {
                    text: '>>'
                    onClicked: video.seek(video.position+video.duration/100)
                    Layout.fillWidth: true
                }
                ToolButton {
                    iconSource: 'pause.png'
                    Layout.fillWidth: true
                    onClicked: video.pause()
     
                }
                Label{
                    text: "Volume"
                }
     
                Slider {
                    id: volume
                    value: 0
                    stepSize: 0.05
                    implicitWidth: 60
                }
            }
        }
        FileDialog{
            id: fileDialog
            visible: false
            title: "Choisissez votre film"
            onAccepted{
                video.source = fileUrl
                selection.text = "<b>Lecture en cours : %1</b>".arg(fileUrl)
            }
        }
    }
    À toi de me dire si tu trouves cela simple ou non. Personnellement moi je suis fan

    [EDIT]
    Voici ce que cela donne :
    Nom : rendu.png
Affichages : 186
Taille : 44,6 Ko
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Jiyuu Voir le message
    À toi de me dire si tu trouves cela simple ou non.
    C'est déjà mieux! Manifestement, tu maîtrises bien ton sujet!

    Maintenant, une centaine de lignes pour ça: ça reste encore simple, mais ça l'est beaucoup moins que tout à l'heure...

    Finalement, la seule chose qui me freine pour aller plus loin, c'est qu'il faut apprendre une nouvelle façon de programmer: syntaxe, grammaire, etc... D'où l’intérêt de tes tutos (merci!), mais je ne sais pas si ça suffira. A voir comment ça évoluera.

    En tout cas, merci!
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème lors de la création d'un film
    Par xe4b4ct dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 31/08/2010, 08h20
  2. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  3. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30
  4. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo