Tu ne peux pas dessiner dans la fonction démarrage. Tout le dessin doit être effectué dans la fonction paintEvent.
-----
Tu ne peux pas dessiner dans la fonction démarrage. Tout le dessin doit être effectué dans la fonction paintEvent.
Sinon pour les graphiques, il y a les Qt Charts https://doc.qt.io/qt-6/qtcharts-index.html
https://doc.qt.io/qt-6/qtcharts-overview.html
un exemple de LineChart: https://doc.qt.io/qt-6/qtcharts-linechart-example.html (les exemples sont accessibles, depuis le 1er lien)
Merci à vous trois de vos réponses:
Jack: Je pense que mes axes x,y ne sont pas dans une fonction de démarrage.
Et pour la fonction paintEvent, simple question, que faut-il faire ?
Le méthode "demarrage" y est-elle dans mon code ci-dessus ?
pm42: Vous avez sans doute raison. Il se peut que les réponses se trouvent dans les textes ci-dessus.
Mais je connais très (trop) peu pour comprendre ce qui a été écrit ! Désolé !
umfred: Vos liens semblent très intéressants. Il faudrait les décortiquer un à un pour essayer d'évoluer.
N.B.: Ne vous tracasser pas outre-mesure avec mes questions. Mais il est certain que j'aie de grosses diffucultés de compréhension
dans le Qt. A la limite, je progresse mieux en C++ (c'est déjà rassurant).
En tout cas, bien à vous tous et merci encore.
Il faut dessiner ce que tu veux voir apparaitre.
Je n'ai pas bien compris le sens de la question. En tout cas, je constate que dans ton code, tu instancies un nouvel objet QPainter. Je ne pense pas que ce soit la bonne solution. Toute la partie dessin doit être effectuée dans la fonction paintEvent.Le méthode "demarrage" y est-elle dans mon code ci-dessus ?
Ma question est de savoir où se trouve la partie paintEvent que vous citez ?
Les "painter.drawLine(QLine(60,500 ,700,500));" des axes x et y se tracent bien sur la fenêtre.
Mais le problème est que, dans la méthode demarrage (en bas du code), "painter.drawLine(QLine(60,500 ,700,500));" n'affiche rien du tout !
Pourquoi ? Est-ce parce-que ce n'est pas un widget (un widget change son affichage (lcdNumber, ....) sur une fenêtre ouverte) et que, comme
les lignes du graphique ne serait pas, à mon sens, des widgets, l'affichage, fenêtre ouverte, ne pourrait se faire ?
Je comprends tout à fait vos interrogations, mais je dois bien vous dire que je ne comprends quasimen
rien et je patauge "grave". Et même en lisant mon propre code (que j'ai écrit beaucoup par tatonnement (étonnant d'ailleurs d'être arrivé
tracer les deux axes x,y dont j'ai mis environ 4 jours pour y arriver)), rien ne me saute au visage.
Pour la partie paintEvent, je suppose qu'elle est en fonction dans la méthode demarrage ! ?
Je dois bien dire aussi que je n'ai aucune idée de ce que représente paintEvent . Quand je dis que je patauge . . .
J'essaye en fait d'apprendre beaucoup en coup par coup, en copiant des exemples, ... Mais il vrai aussi que vouloir tracer un diagramme
sur une fenêtre est probablement d'un niveau bien trop compliqué pour moi.
Tu as une méthode qui s'appelle paintEvent dans ton code.
On ne peut pas t'aider à programmer du C++ et du Qt si tu ne vois pas ça et il vaudrait mieux que tu essaies des choses plus simples et que tu te formes à la programmation.
Bonjour à tous,
En fait, le paintEvent dont vous parlez serait ceci ? void MainWindow:aintEvent(QPaintEvent *event)
Mais, je viens de faire quelques essais et, malgré mon incompétence chronique en cette matière,
j'ai la quasi certitude que mon problème vient du fait que l'on ne sait pas tracer une ligne sur une fenêtre déjà ouverte.
J'essaye donc de détruite la fenêtre existant avant la pression du bouton Demarrage en faisant delete ui;
Mais je n'arrive pas à la recréer après avoir fait painter.drawLine(QLine(80,500, 80,80));
et probablement que, même si une autre fenêtre s'ouvrait, elle n'afficherait plus les widgets boutons, etc.
(Il faut que vous sachiez que le painter.drawLine(QLine(80,500, 80,80)); n'est qu'une ligne, juste pour voir
comment l'afficher car le but final est de constituer la courbe d'un graphique).
Bien sûr pm42, lorsque vous dites dans votre post de hier soir, "il vaudrait mieux que tu essaies des choses plus simples et que tu te formes à la programmation.",
il est vrai que vous avez raison. C'est en fait ce que j'essaye de faire, mais en même temps, j'essaye de pratiquer, bien sûr dans le trop compliqué pour moi,
mais lorsque je trouve une solution à ces problèmes, c'est alors une progression dans l'apprentissage.
Bien à vous tous.
Evidemment.
Tu as raison : reste dans les certitudes de ton incompétence, explique aux gens qui font ça professionnellement depuis longtemps qu'ils ont tort et tu vas y arriver.
Pas du tout : tu ne lis pas les réponses dans le sens où tu ne fais pas l'effort de comprendre ce que ça veut dire par rapport au code.
Le coup du paintEvent est significatif.
Bon courage mais sans moi.
Pas de problème pour moi pm42. Désolé de vous avoir dérangé !
Si j'ai écris des incohérences, veuillez m'excuser.
Mais il y a d'autres personnes compétentes dans ce domaine qui pourront m'aiguiller.
Amicalement et bonne continuation.
paintEvent est une fonction qui est appelée régulièrement au cours de l'exécution de ton programme. La fréquence de l'appel est suffisante pour que le rafraichissement du dessin soit imperceptible.
Il faut donc gérer tout l'affichage de ton graphique dans cette unique fonction.
Merci Jack.