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 Quick Discussion :

Connexion d'un signal C++ vers QML


Sujet :

Qt Quick

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1
    Par défaut Connexion d'un signal C++ vers QML
    Bonjour à toutes et à tous,

    J'utilise Qt depuis quelques temps pour créer des interfaces graphiques et pourquoi ne pas utiliser QML, ce que j'ai essayé de faire à travers une application très simple pour me faire la main. Patatras ça ne fonctionne pas. La connexion entre le signal de la méthode C++ et du signal handler de QML reste inactive. Voici mon code:

    currenttime.h
    Code Qt : 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
     
    #define CURRENTTIME_H
     
    #include <QObject>
    #include <QString>
     
    class CurrentTime : public QObject
    {
        Q_OBJECT
        Q_PROPERTY(QString showTime READ showTime WRITE setShowTime NOTIFY showTimeChanged)
     
    public:
        explicit CurrentTime(QObject *parent = nullptr);
        void setShowTime(const QString &showTime);
     
    private:
        QString m_showTime;
     
    signals:
        void showTimeChanged();
     
    public slots:
            QString showTime();
    };
     
    #endif // CURRENTTIME_H

    currenttime.cpp
    Code Qt : 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
     
    #include "currenttime.h"
     
    #include <QTimer>
    #include <QTime>
    #include <QDebug>
     
    CurrentTime::CurrentTime(QObject *parent) : QObject(parent)
    {
         QTimer *timer = new QTimer(this);
         connect(timer, &QTimer::timeout, this, &CurrentTime::showTime);
         timer->start(1000);
    }
     
     
    QString CurrentTime::showTime()
    {
        m_showTime = QTime::currentTime().toString("hh:mm:ss");
        qDebug(m_showTime.toLatin1());
        return m_showTime;
    }
     
    void CurrentTime::setShowTime(const QString &showTime)
    {
        if (showTime == m_showTime)
            return;
        else {
            m_showTime = showTime;
            emit showTimeChanged();
        }
    }

    main.cpp
    Code Qt : 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
     
    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QString>
     
    #include "currenttime.h"
     
    int main(int argc, char **argv)
    {
        QGuiApplication app(argc, argv);
     
        qmlRegisterType<CurrentTime>("myLibrary", 1, 0, "CurrentTime");
     
        QQmlApplicationEngine engine;
        engine.load(QStringLiteral("qrc:/main.qml"));
     
    //    QObject* root = engine.rootObjects().value(0);
    //    QObject* timeText = root->findChild<QObject*>("timeText");
    //    timeText->setProperty("text", QVariant("Coucou from Main()"));
     
        return app.exec();
    }

    Main.qml
    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
     
    import QtQuick 2.5
    import QtQuick.Controls 2.4
     
    import myLibrary 1.0
     
    ApplicationWindow {
        id: root
        visible: true
        width: 300
        height: 100
     
        CurrentTime{
            id: currentime
            onShowTimeChanged:
                console.log("showTime connections", currentime.showTime)
        }
     
     
        MouseArea{
            anchors.fill: parent
            onClicked:
              console.log("showTime clicked", currentime.showTime)
        }
     
        Text {
            id:timeText
            anchors.centerIn: parent
            objectName: "timeText"
            text: currentime.showTime
            font.bold: true
            font.pointSize: 40
            Connections{
                target:currentime
                onShowTimeChanged:
                    console.log("showTime connections", currentime.showTime)
            }
        }
      }
    Mon horloge n'est pas remise à jour, et qml semble ignorer totalement les événements C++ ???

    Merci de vos suggestions et bien cordialement
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Creer connexion a partir d'Access vers word et excel
    Par khongo agon dans le forum Access
    Réponses: 2
    Dernier message: 04/11/2008, 15h22
  2. Réponses: 2
    Dernier message: 07/01/2008, 16h38
  3. Connexion page ASPX de SharePoint vers base SQL Server 2005
    Par fanfan49 dans le forum SharePoint
    Réponses: 4
    Dernier message: 02/07/2007, 15h38
  4. connexion mysql refusé depuis ovh vers ma machine
    Par phildu dans le forum Installation
    Réponses: 15
    Dernier message: 06/07/2006, 16h53
  5. Pb de Connexion d'un PC client vers le PC serveur Orcale
    Par conon95 dans le forum Connexions aux bases de données
    Réponses: 1
    Dernier message: 19/04/2006, 06h30

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