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 :

Nom du slot pour changer la valeur d'une variable

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 33
    Points : 0
    Points
    0
    Par défaut Nom du slot pour changer la valeur d'une variable
    Bonjour. Après quelques recherches sur le sujet, je ne vis que ce site : http://matthieu-brucher.developpez.c...t/signal-slot/.

    Comment peut-on changer la valeur d'une variable surtout boléenne. Merci.

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 33
    Points : 0
    Points
    0
    Par défaut
    Après quelques essais, cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect(bouton, SIGNAL(clicked()), qApp, SLOT(appuyer = true));
    Pourquoi cela ne marche-t-il pas ?

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 645
    Points : 10 602
    Points
    10 602
    Par défaut
    Sûrement parce que SLOT demande une fonction.

    As-tu essayé ceci?

    Fichier Exemple.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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <QMainWindow>
     
    class QPushButton;
     
     
    class Exemple: public QMainWindow
    {
        Q_OBJECT
     
    public:
     
        Exemple();
     
    // ...
     
    public slots:
     
        void s_clicked();
     
    // ...
     
    private:
     
        QPushButton* button;
     
        char my_char;
        bool my_bool;
        int  my_int; 
     
    // ...
    };
    Fichier Exemple.cpp
    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
     
    #include "Exemple.h"
    #include <QApplication>
    #include <QPushButton>
     
     
    Exemple::Exemple(): QMainWindow(),  my_char('\0'), my_bool(false), my_int(0) {
     
        button = new QPushButton("Hello!", this);
     
        connect(button, SIGNAL(clicked()), this, SLOT(s_clicked()));
    // ...
    }
     
     
    void Exemple::s_clicked() {
        my_char = 'c';
        my_bool = true;
        my_int  = 100;
     
    // ...
    }

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 33
    Points : 0
    Points
    0
    Par défaut
    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
    #include "MaFenetre.h"
     
    #include <QNetworkReply>
    #include <QNetworkAccessManager>
    #include <QNetworkRequest>
    #include <QUrl>
     
    #include <QtNetwork>
     
    MaFenetre::MaFenetre() : QWidget()
    {
    bouton = new QPushButton("GO !", this);
    bouton->show();
     
    QObject::connect(bouton, SIGNAL(clicked()), *appuyer, SLOT(changerDeValeur)));
    }
     
    bool MaFenetre::changerDeValeur() : QWidget()
    {
        appuyer = true;
        return appuyer;
    }
    Je pense qu'il faille que je change l'ordre.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 645
    Points : 10 602
    Points
    10 602
    Par défaut
    Citation Envoyé par UnConfiantEtudiant Voir le message
    Je pense qu'il faille que je change l'ordre.
    Tu veux dire que tu as mis le return avant l'affectation?

    Tu as raison

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 33
    Points : 0
    Points
    0
    Par défaut
    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
    #ifndef MAFENETRE_H
    #define MAFENETRE_H
     
    #include <QPushButton>
     
    #include <QNetworkReply>
    #include <QNetworkAccessManager>
    #include <QNetworkRequest>
    #include <QUrl>
     
    #include <QtNetwork>
     
    class MaFenetre : public QWidget
    {
    public :
        MaFenetre(appuyer);
        bool changerDeValeur();
        void connect();
     
     
    private :
    QPushButton *bouton;
    bool m_appuyer;
    };
     
    #endif // MAFENETRE_H
    apparaît lorsque j'ai avancé mon code ainsi :

    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
    #include "MaFenetre.h"
     
    #include <QNetworkReply>
    #include <QNetworkAccessManager>
    #include <QNetworkRequest>
    #include <QUrl>
     
    #include <QtNetwork>
     
    MaFenetre::MaFenetre(m_appuyer = false) : QWidget()
    {
    bouton = new QPushButton("GO !", this);
    bouton->show();
    }
     
    bool MaFenetre::changerDeValeur() : QWidget()
    {
        appuyer = true;
        return appuyer;
    }
     
    void MaFenetre::methodeAppuyer() : QWidget()
    {
        QObject::connect(bouton, SIGNAL(clicked()), *appuyer, SLOT(changerDeValeur)));
    }
    Pourquoi ?

    Citation Envoyé par foetus Voir le message
    Tu veux dire que tu as mis le return avant l'affectation?

    Tu as raison
    Désolé, non, je voulais réorganiser l'ordre des méthodes pour que le signal et le slot ne soient pas dans le constructeur afin de les appeler par une méthode déclarée(ou définie, je ne sais pas) avant.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 645
    Points : 10 602
    Points
    10 602
    Par défaut
    Citation Envoyé par UnConfiantEtudiant Voir le message
    Désolé, non, je voulais réorganiser l'ordre des méthodes pour que le signal et le slot ne soient pas dans le constructeur afin de les appeler par une méthode déclarée(ou définie, je ne sais pas) avant.
    Genre de truc boiteux et qui plus est, on ne peut rien appeler avant le constructeur.

    Un schéma ASCII ART

    Création de ton application -> [Constructeur -> Création de ton bouton] -> ... un certain temps ... -> Activation du clic

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 33
    Points : 0
    Points
    0
    Par défaut
    Ok. Peux-tu me dire comment on fait en pratique ?

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 645
    Points : 10 602
    Points
    10 602
    Par défaut
    Citation Envoyé par UnConfiantEtudiant Voir le message
    Ok. Peux-tu me dire comment on fait en pratique ?
    Cela me parait logique de connecter le signal d'un bouton ou d'un autre élément UI dans le constructeur de l'application (le plus rapidement possible donc)

    Mais je n'ai plus le souvenir dans les exemples Qt s'ils font ainsi : il faudrait regarder

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 33
    Points : 0
    Points
    0
    Par défaut
    Rompons ! Je vous prie de me donner le modèle classique de ce schéma.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/12/2007, 01h24
  2. Réponses: 2
    Dernier message: 21/09/2007, 17h27
  3. changer la valeur d'une variable en cliquant sur un lien
    Par nintendoplayer dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2007, 19h09
  4. changer la valeur d'une variable avec 2 bouton
    Par toutounesan_bg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 03/08/2007, 10h51
  5. [Système] Changer la valeur d'une variable GET
    Par toddy_101 dans le forum Langage
    Réponses: 13
    Dernier message: 31/01/2007, 14h59

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