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 :

Débloquer des lignes à éditer en cochant une case


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 37
    Par défaut Débloquer des lignes à éditer en cochant une case
    Bonjour à tous,

    Je développe une IHM et j'aimerais avoir un coup de main . j'aimerais débloquer plusieurs LineEdit(qui sont bloquer au moment du lancement) avec une checkbox j'ai écris ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    bool cb1, cb2,cb3, cb4,cb5,line1;
        cb1=ui->checkBox_16->isChecked();
        cb2=ui->checkBox_17->isChecked();
        cb3=ui->checkBox_18->isChecked();
        cb4=ui->checkBox_19->isChecked();
        cb5=ui->checkBox_20->isChecked();
        line1= ui->lineEdit_31->isEnabled();
        if (cb1)
        {
           line1=  QWidget::isEnabled();
        }
    Lorsque que je compile mon programme, le debugger ne peut pas compiler "arrêt brutale".

    Dans l'attente de vos réponses Merci.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Si le programme ne peut pas compiler, c'est qu'il y a des erreurs de compilation et ces erreurs sont importantes (pour vous, pour nous, pour mieux comprendre le problème). Par conséquent, n'hésitez pas à nous les retranscrire.
    De plus, pourquoi n'utilisez vous pas le mécanisme des signaux/slots. Ainsi, vous connectez le signal stateChanged à une fonction qui active la QLineEdit (setEnabled). Et grâce à la magie (ou plutôt à la puissance) des signaux/slots, vous pouvez connecter directement les deux ensembles. Autrement, comme vous en avez une série, vous auriez pu opter pour un QSignalMapper.

    En regardant votre code à nouveau, l'erreur de compilation est lié à : line1= QWidget::isEnabled();. isEnabled n'est pas une fonction statique, donc vous ne pouvez pas l'appeler ainsi, donc erreur de compilation.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 37
    Par défaut
    Merci pour vos informations j'ai donc essayé d'adapter mon programme de 2 façons différentes:

    façon 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Widget::on_checkBox_16_stateChanged(int arg1)
    {
        if(arg1==1)
        {
        ui->lineEdit_31->setEnabled(true);
        }
        else
        {
            ui->lineEdit_31->setEnabled(false);
        }
    }
    mon fichier compile mais cela ne fonctionne pas

    façon 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     QObject::connect(ui->checkBox_16,SIGNAL(StateChanged()),ui->lineEdit_31,SLOT(SetEnable()));
    mon fichier compile mais m'indique ce message d'erreur:

    QObject::connect: Cannot connect (nullptr)::StateChanged() to (nullptr)::SetEnable()
    Merci pour votre aide.

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

    Citation Envoyé par gauthier21 Voir le message
    Attention de bien lire la documentation de stateChanged :
    state contains the checkbox's new Qt::CheckState.
    Si tu suis ce deuxième lien, le tableau t'indique que la valeur « magique » 1 correspond à Qt::PartiallyChecked.
    Ici, tu veux plutôt le comparer à Qt::Checked.

    Concernant ta ligne connect(), prends soin de recopier précisément les noms des signaux/slots, en respectant leur orthographe, casse (minuscules/majuscules), ainsi que (avec les macros) les types des paramètres.
    Ceci fait, tu te rendras compte que stateChanged prend un int en paramètre, tandis que setEnabled prend un bool. Or les macros (obsolètes) SIGNAL/SLOT n'admettent pas de conversion implicite entre les paramètres. Chose que permet la nouvelle syntaxe.

  5. #5
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    Bonjour,ta classe Widget dérive de quelle classe ?

    si elle dérive de QWidget cf https://doc.qt.io/qt-5/designer-using-a-ui-file.html

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 37
    Par défaut
    Merci pour vos explications et de m'avoir aiguillé j'ai trouvé la ou je m'étais trompé.

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

Discussions similaires

  1. Récupérer des lignes non enregistrées dans une table
    Par leddy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/04/2008, 15h09
  2. Gestion des lignes vides avant/après une liste
    Par Invité dans le forum Mise en forme
    Réponses: 4
    Dernier message: 28/08/2007, 16h25
  3. Réponses: 3
    Dernier message: 10/04/2007, 18h09
  4. Concaténer des lignes d'enregistrements dans une colonne
    Par dany13 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 08/07/2005, 21h56
  5. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40

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