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

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut [Qt 5] Nouvelle syntaxe pour les signaux et slots : comment distinguer les signaux selon leurs arguments ?
    Suite de http://www.developpez.net/forums/d13...-slots-qt-5-a/.

    Merci! Ce nouveau fonctionnement est plus pratique.

    Par contre, j'aurais aimé savoir si une solution existe lorsqu'il existe plusieurs implémentation de signaux du même nom.
    Example (http://qt-project.org/doc/qt-5.0/qtw...rentIndex-prop)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void	currentIndexChanged(int index)
    void	currentIndexChanged(const QString & text)
    Comment compiler avec l'un des deux signaux ?

    Si c'est possible, ce serait génial de la rajouter.
    Le seul moyen que j'ai trouvé, c'est d'utiliser l'ancien fonctionnement des signaux/slots.
    Un petit si la réponse convient. Merci.

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

    Il faut utiliser static_cast comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // utilisation de : void currentIndexChanged(int index)
    connect(
        comboBox,
        static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
        /* ... */);
     
    // utilisation de : void currentIndexChanged(const QString & text)
    connect(
        comboBox,
        static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::currentIndexChanged),
        /* ... */);
    Ou depuis la version Qt 5.7 / C++14 avec qOverload() (et dérivés qConstOverload() / qNonConstOverload()) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    QComboBox * comboBox = new QComboBox;
     
    // utilisation de : void currentIndexChanged(int index)
    connect(
        comboBox,
        qOverload<int>(&QComboBox::currentIndexChanged),
        /* ... */);
     
    // utilisation de : void currentIndexChanged(const QString & text)
    connect(
        comboBox,
        qOverload<const QString &>(&QComboBox::currentIndexChanged),
        /* ... */);
    Dernière modification par Invité ; 05/09/2022 à 22h36.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Merci pour le tip!
    Un petit si la réponse convient. Merci.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 21/11/2014, 18h50
  2. Réponses: 1
    Dernier message: 26/06/2007, 12h26
  3. Réponses: 5
    Dernier message: 03/08/2006, 16h13
  4. Réponses: 2
    Dernier message: 13/07/2006, 09h21
  5. Réponses: 6
    Dernier message: 03/05/2006, 11h01

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