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 :

Fermer une fenêtre par pression d'un pushbutton

  1. #1
    Invité
    Invité(e)
    Par défaut Fermer une fenêtre par pression d'un pushbutton
    Bonjour,

    J'ai regardé la doc qt mais c'est la 1ère fois et j'ai l'impression que je sais pas bien la manipuler.
    Mon but : fermer une fenêtre (et donc terminer le programme) d'un simple clic sur un pushbutton.
    Ayant Qt Creator j'ai cliqué droit et fait 'go to slot', j'ai choisi pressed() ensuite voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void MainWindow::on_pushButton_2_pressed()
    {
        close();
    }
    Ce qui m'embête ici c'est que quand je recherche sur la liste des fonctions elle n'apparaît pas pour la classe QPushButton.
    J'ai l'impression que je n'utilise pas la bonne fonction.

    Est-ce que je me sers correctement de la doc ?

    Merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    Si tu cherches le signal pressed() dans la doc tu le trouveras dans la classe QAbstractButton dont QPushButton dérive :

    http://qt.developpez.com/doc/latest/...n.html#pressed

  3. #3
    Invité
    Invité(e)
    Par défaut
    Le signal est l'évènement : ici bouton appuyé
    Ce qui m'intéresse ici c'est le slot, soit l'action à réaliser quand le bouton est pressé : ici mon action à réaliser est bien de fermer la fenêtre principale lorsque j'appuie sur le bouton.
    J'aurai juste aimé savoir comment trouver tous les slots (actions à réaliser lorsqu'on appuie sur le bouton) liés à l'évènement "j'appuie sur le pushbutton"

    Sur la doc la fonction close() n'apparaît pasdans la doc.

    Je me demandais si j'utilisais bien cette doc pour quelqu'un qui débute ?

    Cordialement,
    Gizmo.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par gizmo27 Voir le message
    J'aurai juste aimé savoir comment trouver tous les slots (actions à réaliser lorsqu'on appuie sur le bouton) liés à l'évènement "j'appuie sur le pushbutton"
    Tu pars pas dans la bonne direction.
    Tu peux lier n'importe quel slot à un signal. Ce qu'il faut que tu regardes c'est sur quel objet tu veux interagir suite à ton évènement. Là à priori c'est sur ta fenêtre. Donc dans la doc tu vas sur l'objet de ta fenêtre et tu regardes la liste des slots disponibles pour fermer la fenêtre. N'oublie pas de regarder les slots des classes parentes (il y a un lien à chaque fois indiquant qu'il y a x autres slots dans la classe parent Y).

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ah d'accord merci. Je vais regarder ça sans plus tarder.
    Bonne journée.
    Dernière modification par Invité ; 09/09/2010 à 16h28.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re,

    J'aimerais être sûr que je pars dans la bonne direction parce que j'ai l'impression de confondre entre les signaux/évènements (que j'ai vu dans un tuto sur le net) et les slots.

    Je vais vous indiquer la manip que je fais : j'ouvre Qt Creator et je me positionne dans le fichier ui (celui tout en bas) : une fois là je sélectionne mon bouton, clic droit et fais "go to slot" : ensuite une fenêtre s'ouvre qui me demande de sélectionner le signal (donc l'évènement) : c'est à dire ici pressed()

    à ce moment précis du code se rajoute automatiquement dans le fichier mainwindow.cpp : ce code le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void MainWindow::on_pushButton_2_pressed()
    {    
     
    }
    Ce qui m'a mis la puce à l'oreille comme quoi je risquait de faire le mélange entre signal et slot est cette ligne, qui se trouve dans le fichier mainwindow.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private slots:
        void on_pushButton_2_pressed();
    les private slots sont déclarés à l'intérieur de la déclaration d'une classe.
    donc "void on_pushButton_2_pressed()" serait une action/slot à faire suite à un évènement/signal

    J'ai l'impression que je fais fausse route non ?

    Cordialement,
    Gizmo.

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

    je te conseil d'utiliser, le signal QPushButton::clicked(), et pour quitter ton application le slot QApplication::quit() comme dans cette exemple :

    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
    #include <QApplication>
    #include <QPushButton>
    //#include <QObject>
    //(...)
    int main(int argc,char **argv )
    {  QApplication app(argc,argv) ;
    //(...)
       QPushButton * bouton = new QPushButton( "Fermer l'application" ) ;
       QObject::connect( bouton,SIGNAL( clicked()),&app ,SLOT(quit())  ) 
       bouton->show() ;
    //(...)
       app.exec() ;
    //(...)
    return 0 ;
    }
    Voici quelques liens utilisables :

    http://qt.developpez.com/doc/4.6/qapplication/
    http://qt.developpez.com/doc/4.6/qcoreapplication/
    http://qt.developpez.com/doc/4.6/qpushbutton/
    http://qt.developpez.com/doc/4.6/qabstractbutton/
    ...
    Dernière modification par Invité ; 10/09/2010 à 10h58. Motif: oubli du return 0 ...

Discussions similaires

  1. [WD5.5]Fermer une fenêtre par "Echap"
    Par roms19 dans le forum WinDev
    Réponses: 8
    Dernier message: 13/03/2007, 15h25
  2. Réponses: 2
    Dernier message: 06/02/2007, 18h18
  3. Réponses: 1
    Dernier message: 16/02/2005, 13h04
  4. Comment fermer une fenêtre quand la souris et clavier sont inactifs ?
    Par Goldenkiller dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/12/2004, 23h09
  5. Fermer une fenêtre au bout d'un certain temps.
    Par cprogil dans le forum Composants VCL
    Réponses: 5
    Dernier message: 27/11/2003, 19h25

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