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 :

Application qui ne veut pas dessiner


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Application qui ne veut pas dessiner
    Salut, j'ai codé une petite fenêtre qui affiche une ligne toute les 100 ms aafin de former un signe "+". Quand je compile tout ce passe impec, mais rien ne se passe, 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
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    #include "MainWindow.h"
    #include "Mapscene.h"
    #include "MapView.h"
     
    MainWindow::MainWindow(QWidget* widgetParent) : QWidget(widgetParent)
    {
        this->setWindowTitle("Test_Qt");
        this->resize(200, 200);
     
        this->initMapScene();
        this->initMapView();
     
        QHBoxLayout* layout = new QHBoxLayout(this);
            layout->addWidget(vue);
     
        QTimer* timer = new QTimer(this);
            timer->setSingleShot(false);
            timer->setInterval(100);
     
        QObject::connect(timer, SIGNAL(timeout()), this, SLOT(drawWords()));
     
        this->setLayout(layout);
        this->show();
    }
     
    MainWindow::~MainWindow()
    {
     
    }
     
    bool MainWindow::initMapScene()
    {
        scene = new MapScene(this);
            QRectF surfacescene(-25, -25, 50, 50);
            scene->setSceneRect(surfacescene);
            QPointF pointOrigin(0, 0);
            scene->setPointOrigin(pointOrigin);
     
        return true;
    }
     
     
    bool MainWindow::initMapView()
    {
        vue = new MapView(scene, this);
            vue->setFixedSize(50, 50);
            vue->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
            vue->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     
        return true;
    }
     
    void MainWindow::drawWords()
    {
        static int nbCall = 0;
        if (nbCall = 0)
        {
            QLineF line(0, 0, 0, 10);
            this->drawLine(line);
        }
        else if (nbCall = 1)
        {
            QLineF line(0, 0, -10, 0);
            this->drawLine(line);
        }
        else if (nbCall = 2)
        {
            QLineF line(0, 0, 0, -10);
            this->drawLine(line);
        }
        else if (nbCall = 3)
        {
            QLineF line(0, 0, 10, 0);
            this->drawLine(line);
        }
        else
        {
            QLineF line(0, 0, 0, 10);
            this->drawLine(line);
        }
    }
     
    void MainWindow::drawLine(QLineF &line)
    {
        QPointF linePoint1 = line.p1();
        QPointF linePoint2 = line.p2();
     
        QPointF point1 = scene->pointStandart(linePoint1);
        QPointF point2 = scene->pointStandart(linePoint2);
     
        QLineF line2(point1, point2);
        //QPen pen(Qt::blue, 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
        scene->addLine(line2);
    }
    Le compilateur me retourne 4 mises en garde cependant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    MainWindow.cpp: In member function 'void MainWindow::drawWords()':
    MainWindow.cpp:56: warning: suggest parentheses around assignment used as truth value
    MainWindow.cpp:61: warning: suggest parentheses around assignment used as truth value
    MainWindow.cpp:66: warning: suggest parentheses around assignment used as truth value
    MainWindow.cpp:71: warning: suggest parentheses around assignment used as truth value
    Je crois que c'est au niveau de drawWords() et de drawLine() qui sont tout les deux des slots... Merci pour aide.

  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,

    Ton problème ne viendrait-il psa de ce genre de code (dans drawWords()) :
    Tu met la valeur 0 dans nbCall, tu ne vérifies pas que sa valeur est bien 0. Il faudrait plutôt écrire :
    Ça devrait t'enlever tes warnings.
    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
    Invité
    Invité(e)
    Par défaut
    Oh l'erreur de fou ! Non je vais me cacher, merci encore... Mais ça ne veut toujours pas dessiner... C'est peur-être le QTimer...

  4. #4
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Pourrais-tu reposter ton code corrigé?

    Edit: vérifie que ta fonction drawWords est bien appelée

  5. #5
    Invité
    Invité(e)
    Par défaut
    Il n'y a pas de soucis, après tout il n'y a pas grand chose qui change :

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    #include "MainWindow.h"
    #include "MapScene.h"
    #include "MapView.h"
     
    MainWindow::MainWindow(QWidget* widgetParent) : QWidget(widgetParent)
    {
        this->setWindowTitle("Test_Qt");
        this->resize(200, 200);
     
        this->initMapScene();
        this->initMapView();
     
        QHBoxLayout* layout = new QHBoxLayout(this);
            layout->addWidget(vue);
     
        QTimer* timer = new QTimer(this);
            timer->setSingleShot(false);
            timer->setInterval(100);
     
        QObject::connect(timer, SIGNAL(timeout()), this, SLOT(drawWords()));
     
        this->setLayout(layout);
        this->show();
    }
     
    MainWindow::~MainWindow()
    {
     
    }
     
    bool MainWindow::initMapScene()
    {
        scene = new MapScene(this);
            QRectF surfacescene(-25, -25, 50, 50);
            scene->setSceneRect(surfacescene);
            QPointF pointOrigin(0, 0);
            scene->setPointOrigin(pointOrigin);
     
        return true;
    }
     
     
    bool MainWindow::initMapView()
    {
        vue = new MapView(scene, this);
            vue->setFixedSize(50, 50);
            vue->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
            vue->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     
        return true;
    }
     
    void MainWindow::drawWords()
    {
        static int nbCall = 0;
        if (nbCall == 0)
        {
            QLineF line(0, 0, 0, 10);
            this->drawLine(line);
        }
        else if (nbCall == 1)
        {
            QLineF line(0, 0, -10, 0);
            this->drawLine(line);
        }
        else if (nbCall == 2)
        {
            QLineF line(0, 0, 0, -10);
            this->drawLine(line);
        }
        else if (nbCall == 3)
        {
            QLineF line(0, 0, 10, 0);
            this->drawLine(line);
        }
        else
        {
            QLineF line(0, 0, 0, 10);
            this->drawLine(line);
        }
    }
     
    void MainWindow::drawLine(QLineF &line)
    {
        QPointF linePoint1 = line.p1();
        QPointF linePoint2 = line.p2();
     
        QPointF point1 = scene->pointStandart(linePoint1);
        QPointF point2 = scene->pointStandart(linePoint2);
     
        QLineF line2(point1, point2);
        //QPen pen(Qt::blue, 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
        scene->addLine(line2);
    }

  6. #6
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Que se passe-t-il si tu appelles drawWords() depuis le constructeur?

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

Discussions similaires

  1. [JScrollPane] qui ne veut pas se mettre en haut a gauche
    Par Cyber@l dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 24/11/2006, 10h41
  2. [VB.NET]un formulaire qui ne veut pas se fermer
    Par josyde2006 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/08/2006, 08h29
  3. requetes qui ne veut pas passer
    Par suya95 dans le forum Requêtes
    Réponses: 14
    Dernier message: 04/07/2006, 14h17
  4. JOptionPane qui ne veut pas se fermer!
    Par benthebest dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 29/12/2005, 22h05
  5. un fichier qui ne veut pas être supprimé!!!!
    Par en_stage dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 22/10/2005, 01h08

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