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 :

[Qt Creator] Essai sur un label

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut [Qt Creator] Essai sur un label
    Salut à tous,
    j'essai de me familiariser avec QTCreator..
    Aussi j'ai crée un projet qui comprend une feuille principale, un bouton et un label.
    Je souhaite lorsque je clique sur le bouton, que le texte du label change..
    Voici le code :
    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
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
     
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent), ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
     
    MainWindow::~MainWindow()
    {
        delete ui;
    }
     
    void MainWindow::on_pushButton_clicked()
    {
       ui->labelTest->setText("Ceci est un test");
     
     
     
    }

    Or lorsque je clique sur le bouton, le texte ne change pas.
    Quelqu'un pourrait m'indiquer ou corriger le code ?
    Merci d'avance.

    a+

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Salut,

    Il me semble que tu veuilles utiliser l'auto-connexion : je te renvoie donc vers la FAQ, qui traite de ce sujet.

    http://qt.developpez.com/faq/?page=qt4Core#autoconnect
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut
    Salut,
    J'ai rajouté la ligne concernée...mais je n'ai aucun résultat ...

    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
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
     
    MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
     
        // auto connection des signaux/slots
        QMetaObject::connectSlotsByName(this);
     
    }
     
     
    MainWindow::~MainWindow()
    {
        delete ui;
    }
     
    void MainWindow::on_pushButton_clicked()
    {
       ui->labelTest->setText("Ceci est un test");
     
     
     
     // auto connection des signaux/slots
        QMetaObject::connectSlotsByName(this);
     
     
     
    }
    ?

  4. #4
    Membre éclairé Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par défaut
    Le main()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <QtGui/QApplication>
    #include "mainwindow.h"
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
        return a.exec();
    }
    le mainwindows.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
     
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QtGui/QMainWindow>
    class QLabel;
    class QPushButton;
     
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
     
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();
     
    private:
        QWidget *centralWidget;
        QPushButton *pushButton;
        QLabel *label;
        int i;
     
    private slots:
        void display();
    };
     
    #endif // MAINWINDOW_H
    le mainwindows.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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    #include "mainwindow.h"
     
    #include <QtGui/QBoxLayout>
    #include <QtGui/QLabel>
    #include <QtGui/QPushButton>
     
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        centralWidget = new QWidget(this);
        setCentralWidget(centralWidget);
     
        QBoxLayout *layout = new QBoxLayout(QBoxLayout::TopToBottom, this);
     
        pushButton = new QPushButton(tr("PushButton"),this);
        connect(pushButton, SIGNAL(clicked()), this, SLOT(display()));
        layout->addWidget(pushButton);
     
        label = new QLabel("label",this);
        layout->addWidget(label);
     
        centralWidget->setLayout(layout);
     
        i = 0;
    }
     
    MainWindow::~MainWindow()
    {
     
    }
     
    void MainWindow::display()
    {
        if(i==1) {
            i = 0;
            label->clear();
            return;
        }
        i = 1;
     
        // Création de la QImage 
       // Là tu te débrouille pour récupérer l'image que tu veux
     
        // On l'affiche dans l'application
        QPixmap imageContainer = QPixmap::fromImage(image);
        label->setPixmap(imageContainer);
    }
    Sans les UI c'est plus sympa à gérer, mais c'est plus long à écrire

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut
    Merci pour ton post...mais
    oufff.... ça me parait trop lourd et un peu compliqué...
    Moi qui pensait que QTCreator était un RAD..
    Dépôts des composants sur une form... puis liaisons entre eux...
    On lance le programme ..et hop..c'est partis..

    Je crois que je vais laisser tomber...

    Encore merci pour vos posts..

    a+

  6. #6
    Membre éclairé Avatar de gassi64
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2008
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 255
    Par défaut
    Mais non ne laisses pas tomber !!!

    Je t'ai donné l'alternative qui fonctionne pour ce que tu voulais...sans UI

    Mais c'est aussi simple d'utiliser l'outil RAD inclus à Qt Creator !

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut
    Oui, d'accord...mais je voudrais juste arriver à changer simplement sous QTCreator le texte du libellé.
    Cela me permettrait de voir la façon dont se déclenche un événement juste par un simple clic de souris sur un bouton.

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut. Dans ta forme. Comment as tu appelé ton bouton (objectName)?

  9. #9
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Citation Envoyé par Telemak Voir le message
    Oui, d'accord...mais je voudrais juste arriver à changer simplement sous QTCreator le texte du libellé.
    Cela me permettrait de voir la façon dont se déclenche un événement juste par un simple clic de souris sur un bouton.
    Le problème c'est que Qt étant logique, tu ne peux pas sans écrire quoique ce soit relier un évènement de clic sur un bouton (qui ne prend aucun paramètre, et a priori ne peut donner aucune information... le bouton n'est pas un widget qui permet de saisir une valeur ou quoique ce soit) et le changement de texte. Il faut bien que tu spécifies ce texte quelque part, et comme dans tout outil de RAD, même dans une situation simple comme ça, il faut que tu définisse ce qu'on appelle un SLOT, qui sera une fonction "callback" appelée lors du clic sur le bouton. C'est là que tu vas faire ui->tonlabel->setText("J'ai cliqué sur le bouton wouhou !");

    N'hésite pas à consulter les cours et FAQs que l'on a, tu trouveras pas mal d'infos.

Discussions similaires

  1. petite question sur les "label"
    Par newixz dans le forum Delphi
    Réponses: 5
    Dernier message: 09/09/2006, 12h04
  2. Réponses: 2
    Dernier message: 07/08/2006, 21h21
  3. [C# 2.0] Pb sur un Label ! :)
    Par hobotalker dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/05/2006, 10h10
  4. Index sur un label
    Par matech dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/03/2006, 18h50
  5. [Debutant]Transparence sur un Label ou GroupBox
    Par ghan77 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 15/12/2005, 16h53

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