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

Discussion :

QSound non reconnu

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Octobre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 9
    Points : 2
    Points
    2
    Par défaut QSound non reconnu
    Bonjour.
    J'utilise QT Creator.
    J'ai un problème avec un include. Debut de mon fichier Labyrinthe.h.
    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
    #ifndef LABYRINTHE_H
    #define LABYRINTHE_H
    #include <ctime>
    #include <QApplication>
    #include <QVector>
    #include <QtGui>
    #include <QGraphicsItem>
    #include <QGraphicsScene>
    #include <QGraphicsPixmapItem>
    #include <QGraphicsRectItem>
    #include <QPainter>
    #include <QString>
    #include <QSound>
    #include <QImage>
    Le #include <QSound> est souligné en rouge.
    Dans le .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QSound son("D:\doc \Mes documents\Ma musique\space.wav");
    son.play();
    Erreur de Link 2019 à la compilation. "symbole externe non résolu ....
    Dans le fichier .pro, j'ai ajouté : INCLUDEPATH += D:\Qt\5.7\msvc2015_64\include\QtMultimedia\QSound
    J'ai également essayé de charger un autre fichier que QSound se trouvant dans la même directory
    Cela ne résoud pas le problème.
    Comment faire pour que le compilateur aille chercher les fichiers à inclure?
    Je n'ai rien trouvé dans le manuel de QT Creator.
    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Citation Envoyé par JDEL416 Voir le message
    Dans le fichier .pro, j'ai ajouté : INCLUDEPATH += D:\Qt\5.7\msvc2015_64\include\QtMultimedia\QSound
    Ce n'est pas ainsi qu'il faut faire pour les éléments appartenant à Qt.
    Cf. Qxxx : No such file or directory

    Citation Envoyé par JDEL416 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QSound son("D:\doc \Mes documents\Ma musique\space.wav");
    Attention à doubler les \ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QSound son("D:\\doc \\Mes documents\\Ma musique\\space.wav");
    Dernière modification par Invité ; 01/10/2018 à 21h16.

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Octobre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci pour l'info. J'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    greaterThan(QT_MAJOR_VERSION, 4): QT += multimedia
    dans *.pro et j'ai lancé qmake.

    Je n'ai plus d'erreur de compilation. Super! Mais je n'ai pas de son non plus, avec ou sans les doubles "\". Faut-il obligatoirement le faire tourner dans un thread ?
    Merci pour votre aide.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Le fait est qu'ici tu utilises une variable locale qui est détruite dès que tu sors du scope dans lequel elle est déclarée. Donc il est normal que tu n'entendes rien si cette ligne n'est pas suivi d'une pause qui retarde cette destruction.
    Avant de parler thread, commence par envisager l'usage d'un pointeur ou le passage en membre de la classe pour prolonger sa durée de vie.

    Remarque : je note que tu as beaucoup d'includes dans ton header. À mon avis, nombre d'entre-eux seraient à déplacer dans le .cpp, voire à supprimer.

  5. #5
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Octobre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse.
    En effet, je n'avais pas pensé à la durée de vie de la variable. Pour moi, une fois la variable passée, il était normal que le traitement soit réalisé jusqu'au bout. Si je me souviens bien, ça se passe comme cela dans visual basic. Cela bloque logiciel pendant l'exécution jusqu'à ce que l'on décide d'utiliser un thread.
    Donc si j'ai besoin d'une variable de classe, je suppose que je dois ajouter dans mon .h :et initialiser m_son dans le .cpp. Mais, quoi que je fasse, le compilateur hurle : "QSound : aucun constructeur par defaut à priori disponible".
    Par contre je peux mettre sans problème dans le .h sans comprendre exactement pourquoi :J'ai aussi essayé de coder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QSound *son = new QSound(""D:\\doc\\Mes documents\\Ma musique\\space.wav");
        son->play();
    sans rien mettre dans le .h.
    Il n'y a plus d'erreur de compilation sur les deux dernières méthodes mais je n'ai toujours pas de son. J'ai le message suivant en debug : " event startQSoundEffect(qaudio): Error decoding source".
    J'ai essayé le fichier .wav sur VLC et sur Groove. Cela fonctionne. Je ne pense pas que ce soit un .wav compacté mais comment le savoir ? J'ai aussi essayé d'autres fichiers .wav.
    Dans le cas de la création dynamique du pointeur, je suppose que je devrais mettre ensuite quelque chose du genre son->deleteLater() dont on pourrait penser que cela détruit la variable à la fin de la lecture mais si je le mets, je n'ai plus le message d'erreur de décodage, ni de son bien sûr. Donc je suppose que c'est plutôt un "delete Now".
    A part le problème du décodage, mettre un pointeur en variable de classe semble plus simple pour utiliser plusieurs sons successifs sur la même variable dans les différentes fonctions.

    A propos des include multiples : Pour le moment je patauge bien, même au bord de l'enlisement et pas seulement sur QSound, hélas. j'ai donc mis pas mal d'include en testant différentes solutions notamment en graphique. Je ferai le ménage plus tard. Mais peu sont inutiles je crois. Pourquoi serait-ce mieux de les mettre dans le .cpp ?

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 594
    Points
    188 594
    Par défaut
    Citation Envoyé par JDEL416 Voir le message
    Pourquoi serait-ce mieux de les mettre dans le .cpp ?
    Si tu inclus énormément de fichiers .h dans un autre fichier .h, qui sera à son tour inclus, tu auras une grosse quantité de fichiers .h inclus dans chaque fichier source — donc le compilateur passera son temps à réanalyser tous ces fichiers .h tout à fait inutilement.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Candidat au Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Octobre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Ah! oui en effet.
    Merci beaucoup pour le conseil avisé et les informations sur QSound. La discussion sur QSound m'a aidé à comprendre et résoudre un autre problème. Donc Merci encore.

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

Discussions similaires

  1. [Lomboz] [JBoss] JBoss 3.2.6 non reconnu par Lomboz ?
    Par romain3395 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 17/12/2004, 16h35
  2. Commandes non reconnues.
    Par Manu' dans le forum Administration système
    Réponses: 3
    Dernier message: 07/10/2004, 17h09
  3. [EJB] [JSP] Méthode EJB non reconnue dans jsp
    Par stago dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/07/2004, 09h52
  4. Creation de table, caractère non reconnu
    Par Missvan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/02/2004, 13h28
  5. xslt_create() non reconnu
    Par BRAUKRIS dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 11/12/2003, 14h43

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