|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : avril 2011 Messages : 43 ![]() |
Bonsoir,
J'ai beau esseyer , je n'arrive pas à avoir le résultat , pire , aprés compilation j'ai le résultat suivant: tp.exe a quitté avec le code -1073741819 Ce que je veux faire est en fait de recueillir les données introduites dans un tableau (QTableWidget) dans une fonction "dessin" qui sera charger de mettre un segment entre deux cercles si l'element M[i][j] =1 , ne rien dessiner sinon . Voici le code : Code :
|
||
|
|
00
|
|
|
#2 |
![]() ![]() Louis du VerdierÉtudiant Inscription : mars 2009 Messages : 1 480 ![]() |
Bonjour,
Première remarque : qu'en est-il des magnifiques fuites de mémoire ? Vous allouez de la mémoire pour créer un tableau et un bouton à chaque passage dans paintEvent(), qui est une fonction qu'on ne doit pas appeler directement comme vous l'avez fait. Elle s'appelle par le biais d'un rafraichissement de la fenêtre via une action utilisateur d'expose ou via update()/repaint(). Deuxième chose, la connexion : Code :
QWidget::connect(m_bouton, SIGNAL(clicked()), this, SLOT(dessin(int[][]))); Code :
connect(m_bouton, SIGNAL(clicked()), this, SLOT(dessin())); Bonne continuation, Amnell.
__________________
Qt : FAQ Qt - Qt Quarterly - Ma page perso - La documentation de Qt en français Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL) Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML |
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : avril 2011 Messages : 43 ![]() |
Merci pour réponse,
J'ai modifier selon vos recommandations (sauf le repaint ou update que je n'ai pas su employer) et le programme ne fonctionne toujours pas . Je pense neanmoins que le probléme réside en le fait que je n'arrive pas prendre le contenu d'une cellule et renvoyer son contenu dans une le tableau M. Supposons que cela soit fait , est-ce que le contenu est de type QString dans quel cas je n'y comprendrai plus rien puisque j'ai converti la chaine en entier. Je vous serez vraiment reconnaissant de me donner une réponse. |
|
|
00
|
|
|
#4 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : avril 2011 Messages : 43 ![]() |
Bonjour,
Je suis parvenu à régler le probléme d'erreur de segmentation. Toutefois, il n'y a que le tableau (QTableWidget) qui s'affiche , pas de bouton"Tracer" qui en cliquant dessus lancera le tracé des somment et des arrrêtes. Voici le code modifié: Code :
|
||
|
|
00
|
|
|
#5 |
![]() ![]() Ingénieur développement logiciels Inscription : mai 2009 Messages : 574 ![]() |
Tu n'as pas donné de parent au bouton Tracer. Tu devrais le rajouter (mettre this en parent), et donc lorsque le show() de la fenêtre sera appelé, ce sera propagé à tous les enfants dont le bouton.
Si tu tiens à ne pas lui donner de parent, alors tu dois appeler show() dessus. |
|
|
00
|
|
|
#6 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : avril 2011 Messages : 43 ![]() |
Merci beaucoup , le boutton s'affiche enfin!!
Cependant en mettant une valeur dans le QTableWidget dans la cas [1][2] et en cliquant sur le bouton le programme s'interrompt . Lors du debogage , j'obtiens une erreur de segmentation, et en faisant attention à la variable Num_Sommet on remarque qu'elle a une valeur tres grande alors qu'elle devrait rester à"2". J'ai esseyé mais le resultat reste le mêm et le programme plante aprés avoir appuyer sur le bouton. Voici le code Code :
Merci de votre aide. |
||
|
|
00
|
|
|
#7 | ||||
![]() ![]() Louis du VerdierÉtudiant Inscription : mars 2009 Messages : 1 480 ![]() |
Code :
La bonne manière est la suivante : Code :
Avec une meilleure indentation et un coding style constant, ce serait plus simple pour nous de vous aider et pour vous d'éviter d'effectuer des erreurs. Concernant l'erreur en question, je suppose qu'elle provient du .h, avec int M [][2]. Vu que nous sommes en C++ et non en JS/autre, on ne peut pas demander à ce que le tableau s'étende autant qu'on le veut. De ce fait, si je ne raconte pas de bêtises, la syntaxe donnée est équivalente à int *M[2] et demande donc une allocation de mémoire. Ou si vous ne souhaitez pas en effectuer, vous avez toujours à disposition des conteneurs tels que QList et QVector. Bonne continuation, Amnell.
__________________
Qt : FAQ Qt - Qt Quarterly - Ma page perso - La documentation de Qt en français Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL) Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML |
||||
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : avril 2011 Messages : 43 ![]() |
Merci pour cette réponse , j'apprécie vraiment.
J'ai effectué les changements que vous m'avez conseillé et le programme plante toujours(j'ai fixé la taille du tableau à M[2][2]).Lors du debogage les valeurs de Num_Sommets sont anormalement grandes(doit s'arreter à 2) ce qui je pense est du à une sorte de boucle infine. A noter que je n'ai aucune idée de la maniére dont repaint() u update() doit être utilisé. Je vous serai très reconnaissant de me l'indiquer. Merci encore une fois. |
|
|
00
|
|
|
#9 |
![]() ![]() Ingénieur développement logiciels Inscription : mai 2009 Messages : 574 ![]() |
Tu veux dire que la documentation n'est pas claire ?
|
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : avril 2011 Messages : 43 ![]() |
Je n'aurais pas cette prétention .
Je ne l'ai peut-être pas mentionné mais je suis encore débutant en C++ , c'est que du neuf pour moi. C'est donc accompagné d'une demande d'indulgence sur ce point que je vous prie de me montrer comment je pourrait coder avec update ou repaint dans mon programme , merci d'avance. |
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : avril 2011 Messages : 43 ![]() |
Bonsoir,
Je serais reconnaissant envers celui qui pourrait m'indiquer comment utiliser update . J'ai esseyé en slot apres avoir cliquer sur le boutton mais ça ne marche pas . |
|
|
00
|
|
|
#12 | ||
![]() ![]() Ingénieur développement logiciels Inscription : mai 2009 Messages : 574 ![]() |
Ça marche sûrement, mais ça ne fait pas ce que tu crois. Comme le dit la documentation, on utilise update() pour forcer le redessin là où c'est nécessaire, et repaint() pour le forcer sur l'ensemble du widget. Mais tout de suite ça ne va pas t'aider.
Tout ce qui est dessin (ta méthode dessin() quoi) est à faire dans le paintEvent(). paintEvent est une méthode événementielle, appelée uniquement par Qt donc, et dont l'appel peut être ordonnée avec update()/repaint(). C'est ce qu'Amnell a expliqué, on n'appelle pas paintEvent() directement. A mon avis, ce que tu veux faire, c'est quelque chose comme : Code :
Code :
connect(Tracer, SIGNAL(clicked()), this, SLOT(dessin())); Code :
connect(Tracer, SIGNAL(clicked()), this, SLOT(update())); |
||
|
|
00
|
|
|
#13 | |
![]() ![]() Louis du VerdierÉtudiant Inscription : mars 2009 Messages : 1 480 ![]() |
Citation:
@hichemnho> Si vous nous copiiez le code tel que vous l'avez en ce jour, en bien indenté, cela pourrait nous aider à régler le problème.
__________________
Qt : FAQ Qt - Qt Quarterly - Ma page perso - La documentation de Qt en français Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL) Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML |
|
|
00
|
|
|
#14 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : avril 2011 Messages : 43 ![]() |
Bonsoir,
Tout d'abord merci pour toute la peine que vous vous donnez pour m'aidé, ensuite voici le code: Code :
|
||
|
|
00
|
|
|
#15 | |||||
![]() ![]() Ingénieur développement logiciels Inscription : mai 2009 Messages : 574 ![]() |
Citation:
Code :
Code :
connect(Tracer, SIGNAL(clicked()), SLOT(dessiner())); Code :
|
|||||
|
|
10
|
|
|
#16 | ||
![]() ![]() Louis du VerdierÉtudiant Inscription : mars 2009 Messages : 1 480 ![]() |
Par code propre et bien indenté, j'entendais plutôt ceci (ce qui est bien plus lisible) :
Code :
__________________
Qt : FAQ Qt - Qt Quarterly - Ma page perso - La documentation de Qt en français Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL) Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML |
||
|
10
|
Copyright © 2000-2012 - www.developpez.com