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 :

Utilisation graphique des layouts

  1. #21
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je n'ai pas très bien saisi votre idée : les filtres je ne connais pas qu'est-ce donc que ceci c'est quoi ? Vous dites de créer en boucle les sliders.
    Le résultat aussi simple soit-il la méthode n'est-elle pas compliquée à mettre en oeuvre, voire épineuse ?
    Disons que si je n'ai pas de visualisation graphique je suis perdu. J'ai opté pour Qt Creator pour justement le designer qui permet de visualiser la fenêtre.
    Bah je peux toujours continuer comme j'ai fait quitte à plus tard modifier et faire comme vous dites ça n'engage à rien.
    La première version que je sortirai sera une version bêta donc modifiable.

    Bonne journée. Cordialement, Gizmo.

  2. #22
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Le filtre, c'est le filtre passe-bande qui constitue ton égaliseur.

    Du code devrait aider à comprendre.
    Imagine que tu veux faire un égaliseur 32 bandes et que tu as implémenté ta fonction d'égalisation dans une classe "Equalizer" qui propose en autre une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void setValue(int frequence, float value = 0.0)
    .

    Le pseud-coe pour créer ton égaliseur ressemblera à ça :
    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
    créer HBoxLayout
    {
       créer un VBoxLayout
       ajouter un QLabel("25Hz")
       créer un HBoxLayout
          ajouter le slider "slider25Hz"
          connecter le signal "valueChanged" du slider "s25" au slot "setValue25"
          créer un VBoxLayout
             ajouter un QTextEdit
             connecter le QTextEdit et le slider pour mettre à jour la valeur
             ajouter un QLabel("dB")
             ajouter un spacer
    }
    {
       créer un VBoxLayout
       ajouter un QLabel("32Hz")
       créer un HBoxLayout
          ajouter le slider "slider32Hz"
          connecter le signal "valueChanged" du slider "s32" au slot "setValue32"
          créer un VBoxLayout
             ajouter un QTextEdit
             connecter le QTextEdit et le slider pour mettre à jour la valeur
             ajouter un QLabel("dB")
             ajouter un spacer
    }
    ... idem pour toutes les fréquences
     
    private slots:
       void setValue25(int value) { equalizer.setValue(25, value); }
       void setValue32(int value) { equalizer.setValue(32, value); }
    ... idem pour toutes les fréquences
    Ca fait beaucoup de code copié collé

    La "bonne" solution (que tu peux pas faire avec Qt Designer) est de créer une classe FiltreSlider (par exemple) qui prend la fréquence en paramètre :
    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
    class FiltreSlider
    {
    private:
       int frequence;
     
    public:
    FiltreSlider(int f) : frequence(f)
    { // cette partie de change pas trop
       créer un VBoxLayout
       ajouter un QLabel(f + "Hz")
       créer un HBoxLayout
          ajouter un slider
          connecter le signal "valueChanged" du slider au slot "setValue"
          créer un VBoxLayout
             ajouter un QTextEdit
             connecter le QTextEdit et le slider pour mettre à jour la valeur
             ajouter un QLabel("dB")
             ajouter un spacer
    }
     
    private slots:
       void setValue(int value) { equalizer.setValue(frequence, value); }
    };
    Tu peux alors créer simplement ton égaliseur en donnant un tableau de fréquences et en écrivant une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int frequences = { 25, 32, ... }
    créer HBoxLayout
    for (int i = 0; i < N; ++i)
       ajouter un nouveau FiltreSlider au HboxLayout avec f = frequences[i]
    Le code est mieux structuré, tu peux modifier 1 seule fois le slider et tous les sliders auront la même apparence, ça simplifie la maintenance et l'évolutivité, etc. Que du mieux donc

    C'est la base de la programmation objet quand même...

  3. #23
    Invité
    Invité(e)
    Par défaut
    D'accord pour le filtre je croyais que vous parliez d'autre chose.
    Pour ce qui est de créer une nouvelle classe FiltreSlider disons que je n'ai pas le niveau pour ça je ne suis qu'un pauvre débutant.
    A moins qu'elle existe déjà dans Qt (je parie que oui mdr).

    Je ne doute pas une seule seconde que la solution que vous proposez est plus efficace mais pour l'instant, sans chercher à vous offenser, je projette de ne plus toucher aux layouts avant un bon bout de temps, la partie programmation pure hors design me prenant déjà beaucoup de temps vous pouvez me croire.

    Ceci étant dit je prend bonne note de votre solution : le truc de la boucle je n'y avait pas pensé : en informatique faut être fainéant c'est la première chose que l'on m'a apprise.

    Merci à vous bonne journée. Cordialement, Gizmo.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Requête SQL utilisée pour le graphique des TOP SQL
    Par fcjunic dans le forum Entreprise Manager
    Réponses: 2
    Dernier message: 30/07/2010, 16h23
  2. Réponses: 2
    Dernier message: 15/01/2010, 14h47
  3. Utilisation des Layouts
    Par cashmoney dans le forum Agents de placement/Fenêtres
    Réponses: 13
    Dernier message: 02/02/2009, 20h20
  4. [ZF 1.7] Utilisation des "layouts"
    Par Feng-Huang dans le forum MVC
    Réponses: 14
    Dernier message: 16/01/2009, 10h01
  5. Utilisation des layout
    Par slake13 dans le forum Débuter
    Réponses: 5
    Dernier message: 14/11/2008, 11h48

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