j'ai une idée de projet en Qt et j'ai besoin de quelques conseils pour m'aider.
Je précise que je souhaite le faire moi-même, pas obtenir toutes les réponses toutes faites.
1) J'aurai notamment une QProgressBar à défaut de faire mieux, et je voudrais qu'elle avance par exemple durant 20 secondes et durant 20 secondes dans l'autre sens et que une betite boule par exemple se déplace, et fasse le va et bien pendant un temps déterminé par moi-même au départ.
Est-ce que c'est faisable avec QProgressBar ? ou peut-être avez-vous mieux qu'une QProgressBar ?
2) J'avais pensé à Qt Designer sous Qt Creator. Cependant, étant donné que le truc est un peu sophistiqué, je ne sais pas si on peut le faire en Qt Designer sans modifier manuellement le code, ce qui est une très mauvaise pratique.
3) De plus, je voudrais qu'un son créé par moi-même en mp3 que j'enregistre, soit émis à chaque fois que la progresse bar arrive au bout des 20 secondes
4) Comment intégrer un fichier son de ce type avec Qt ?
5) Avez-vous des conseils pour rendre la chose esthétique ?
Il ya probablement d'autres conseils que vous pourriez prodiguer afin de partir sur de bonnes bases. Bienvenus !
1) Je pencherai sur un QTimer qui change la valeur de la progresse bar à intervalles réguliers.
2) Avec Qt Designer on peut pratiquement tout faire, même rajouter des widgets faits maison. Personnellement quand je fais du Qt, j'utilise toujours Qt Designer.
Pour le reste je laisses d'autres répondrent.
git is great because Linus did it, mercurial is better because he didn't.
en attendant d'autres réponses, est-ce que tout ce que je veux faire est possible avec Qt Designer ?
Par exemple pour le son ?
POur la boule qui monte et descend sur 20 secondes, je voudrais que ça se fasse de manière continue à l'oeil, c'est-à-dire que l'on ne devrait pas voir de mouvement saccadé de la progression, mais un mouvement fluide continu et régulier.
dans ce cas , si j'ai une partie en Qt Designer et une autre qui n'est pas en Designer, un jour gbdivers m'avait dit qu'il ne fallait pas toucher manuellement au fichier généré automatiquement par la manipulation en Qt Designer
Est-ce que l'on peut proprement faire une partie en QT designer et ajouter une partie manuellement , en créant un code de qualité ?
T'es obligé de coupler les deux. Qt designer ne fait que te générer un fichier C++ pour construire ton interface. C'est celui là qu'il ne faut pas toucher à la main. Par contre tout seul il ne va pas lancer ton application, tu dois ajouter le lancement + tout le métier.
En general on evite d'utiliser les smart_ptr avec tout ce qui derive de QObject. Etant donnée que Qt libere les toutes les ressources via un systeme parent-efant, il risque d'y avoir une double liberation, donc un crash.
Pour ton problème, pourquoi tu veux caster? De plus tu devrais utiliser la nouvelle syntaxe signal/slot de Qt.
- QtDesigner te permet de construire ton interface, même avec des objets personnalisés, et il est normal de manipuler cette interface dans la classe utilisatrice ne serait-ce pour la lier aux traitements qui vont avec. Ce que tu ne dois pas modifier, c'est le code généré par le moc
- Pour jouer des sons, tu as tout la partie audio du framework QtMultimedia
- Laisse Qt gérer les objets avec le système parent-enfant quand tu le peux
Il faut que la musique soit dans le même répertoire que ton exécutable (donc quelque part dans le dossier build-xxx), ou que ton chemin soit absolu ou relatif à ce dossier.
Mais sinon, je te conseille d'utiliser un fichier qrc, ça sera beaucoup plus simple.
EDIT: Après si c'est juste un petit son tu as une classe faite pour ça beaucoup plus simple que celle pour une musique : https://doc.qt.io/qt-5/qsound.html
Pour débuter , un grand merci à Maluna34, eugchriss, romantik, markand.
Alors avec QMediaPlayer, et QSound, j'arrive à lancer un fichier wav.
Par contre, quand je passe sur un mp3 en changeant simplement cela, cela ne fonctionne plus.
Le wav passe, pas le mp3
Auriez-vous une idée comment remédier à cela ?
Merci
EDIT : un autre pseudo-problème : sur un autre point concernant les QTimer, j'ai pu déboguer un truc par hasard, mais j'aimerais le comprendre : j'avais deux QTimer dans la même fonction donc UN SEUL était une variable membre de ma classe et le programme se lançait, mais ce que je voulais voir à l'écran ne se passait pas. Lorsque j'ai passé le deuxième QTimer en variable membre pour déboguer dans l'objectif de respecter SOLID, le problème s'est réglé. Cependant, je n'ai pas compris pourquoi.
QSound ne prend effectivement en charge que les fichier wav, c'est ce qui est écrit dans sa documentation. Parce que c'est un format brut, QSound n'a ainsi pas à gérer l'encodage et la compression du son.
On comprend rien à ce que tu raconte avec tes QTimer, soit plus clair s'il te plait, et avec un code example pour illustrer
Dream on, Dream on, Dream until your dream comes true
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.
Eug
Eug
git is great because Linus did it, mercurial is better because he didn't.
Eug