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 :

Sélectionner le contenu d'un QSpinBox

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 32
    Par défaut Sélectionner le contenu d'un QSpinBox
    Bonjour,

    Est-ce possible de sélectionner, via une instruction, le contenu d'une QSpinBox ?

    Je cherche à pouvoir remplacer le contenu de ma QSpinBox par la saisie au clavier sans avoir besoin d'effacer ce qu'il y avait avant (une fois le focus sur ma QSpinBox). Si il y a un 0 par défaut et que je saisis, la saisie donnerait 6 (et non 60 comme actuellement après un setFocus().

    En appuyant sur Tab, j'y arrive mais comment faire de même à l'intérieur de mon programme ?

    Je précise que spinBox->selectAll() ne donne rien.

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut setValue
    Hello migrec,

    SelectAll() fonctionne très bien chez moi.

    Par contre tu ne peux pas modifier la valeur si tu n'as pas mis le focus.
    Voici le code que j'ai utilisé, et qui fonctionne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ui->spinBox->setFocus();
        ui->spinBox->selectAll();
    Ces instructions sont lancé dans un slot que j'appelle suite a un clique bouton, ensuite le texte que je tape au clavier vient directement remplacer le contenu de la spinbox.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 32
    Par défaut
    Citation Envoyé par Gojir4 Voir le message
    Hello migrec,
    Voici le code que j'ai utilisé, et qui fonctionne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ui->spinBox->setFocus();
        ui->spinBox->selectAll();
    Ces instructions sont lancé dans un slot que j'appelle suite a un clique bouton, ensuite le texte que je tape au clavier vient directement remplacer le contenu de la spinbox.
    Bon, et bien, ce même code ne fonctionne pas chez moi (Qt 4.6 sur Linux et Qt 4.7 sur Windows) !!
    Il est placé dans la constructeur de ma fenêtre.

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut
    Effectivement j'ai le même comportement. Pour un raison que j'ignore, il semble que la sélection soit annulé après la sortie du constructeur de la fenêtre dialog (dans mon cas).

    Mais si tu a vraiment besoin que ceci soit fait depuis le constructeur, la solution est d'utiliser un timer, avec in singleShot par exemple :

    Voici mon code :
    header
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Dialog : public QDialog
    {
       //Some declarations...
     
    public slots:
        void changeValue();
    };
    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
    Dialog::Dialog(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::Dialog)
    {
        ui->setupUi(this);
     
        connect(ui->changeButton, SIGNAL(clicked()), this, SLOT(changeValue()));
     
        QTimer::singleShot(1, this, SLOT(changeValue()));
     
    }
     
    void Dialog::changeValue()
    {
        ui->spinBox->setFocus();
        ui->spinBox->selectAll();
    }
    Ceci devrait fonctionner.
    Ah et pour info j'utilise Qt 4.7.4 sous Windows

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 32
    Par défaut
    Citation Envoyé par Gojir4 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
        QTimer::singleShot(1, this, SLOT(changeValue()));
     
    }
     
    void Dialog::changeValue()
    {
        ui->spinBox->setFocus();
        ui->spinBox->selectAll();
    }
    Ceci devrait fonctionner.
    Ah et pour info j'utilise Qt 4.7.4 sous Windows
    Ok, j'ai mis ça et ça fonctionne ! Merci !

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut Résolu
    Citation Envoyé par migrec Voir le message
    Ok, j'ai mis ça et ça fonctionne ! Merci !
    Pense à le mettre en résolu :-)

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

Discussions similaires

  1. Impossible de sélectionner le contenu de champs input de type texte sur IE 6 / 7
    Par Lo-chan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/06/2008, 16h23
  2. Réponses: 4
    Dernier message: 25/09/2007, 09h34
  3. Réponses: 1
    Dernier message: 14/08/2007, 14h18
  4. Sélectionner le contenu d'un TextBox
    Par Grosloup dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/04/2007, 08h44
  5. Sélectionner le contenu d'un DBText
    Par alexdfr dans le forum Delphi
    Réponses: 2
    Dernier message: 28/09/2006, 10h42

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