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

Qt Discussion :

SLOT et QLineEdit


Sujet :

Qt

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 5
    Points
    5
    Par défaut SLOT et QLineEdit
    Bonjour,

    dans mon programme j'ai 2 QPushButton et 2 QLineEdit
    Lorsque je clique sur le PushButton_Source, j'ouvre un QFileDialog, et je mets à jour QLineEdit_Source.
    Lorsque je clique sur le PushButton_Dest, j'ouvre un QFileDialog, et je mets à jour QLineEdit_Dest.

    Voici un extrait du programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ui->setupUi(this);
    connect(ui->PushButton_Source,  SIGNAL(clicked()), this, SLOT(getPathS()));
    connect(ui->PushButton_Dest,  SIGNAL(clicked()), this, SLOT(getPathD()));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void MainWindow::getPathS()
    {
    <div style="margin-left:40px">QString path;
    path = QFileDialog::getExistingDirectory(this, tr("Choisir un répertoire"), QDir::homePath(), QFileDialog::ShowDirsOnly);
    ui->QLineEdit_Source->setText(path);</div>}
     
    void MainWindow::getPathD()
    {
    <div style="margin-left:40px">QString path;
    path = QFileDialog::getExistingDirectory(this, tr("Choisir un répertoire"), QDir::homePath(), QFileDialog::ShowDirsOnly);
    ui->QLineEdit_Des->setText(path);</div>}
    Le programme marche, mais je pense que l'on doit pouvoir simplifier les deux fonctions getPathS et getPathD en une seule. Est ce possible ? Si oui, comment ?

    Merci d'avance

  2. #2
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    Salut,
    si je reformule le besoin, tu aimerais connaitre de quel bouton provient le signal?

    Pour ça, il existe un principe dans Qt qui s'appelle le QSignalMapper, et qui (tu as de la chance) a été redéfinie pour les boutons.
    QButtonGroup, c'est par là qu'il faut regarder.
    De mémoire, tu attribues des ID sur les boutons lorsque tu les mets dans le groupe, et il existe un signal de ce groupe là qui est envoyé lors d'un clic sur un des boutons, avec l'ID en question.

    Tu n'aura plus qu'un seul slot, qui attend un ID, avec un if dedans

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Merci voici le code avec un QButtonGroup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ui->setupUi(this);
    ui->bGroup_Path->addButton(ui->PushButton_Source, 1);
    ui->bGroup_Path->addButton(ui->PushButton_Dest, 2);
    connect(ui->bGroup_Path,  SIGNAL(buttonClicked(int)), this, SLOT(getPath(int)));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void MainWindow::getPath(int id)
    {
    <div style="margin-left:40px">QString path;
    path = QFileDialog::getExistingDirectory(this, tr("Choisir un répertoire"), QDir::homePath(), QFileDialog::ShowDirsOnly);
    if (id == 1) {ui->QLineEdit_Source->setText(path);}
    else if (id == 2) {ui->QLineEdit_Dest->setText(path);}</div>}
    Par contre si une personne a un exemple avec QSignalMapper, je suis intéressé.

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

Discussions similaires

  1. Lier un QLineEdit à un slot
    Par sub-0 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2011, 12h28
  2. Installer un pentium III sur slot 1
    Par major2 dans le forum Composants
    Réponses: 2
    Dernier message: 11/05/2005, 11h55
  3. Qt::connect: no such slot ...
    Par fdrouhin dans le forum Qt
    Réponses: 8
    Dernier message: 02/12/2004, 19h11
  4. Apache et nombre de slots
    Par Acti dans le forum Apache
    Réponses: 7
    Dernier message: 23/10/2004, 23h57

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