Bonjour,

Je viens vers vous afin de vous demander un petit peu d'aide car je bloque complétement sur ce que je veux faire sur Qt, malgré que je fouille google et divers forums avec pleins d'onglets ouverts en même temps afin de trouver une solution à mes petits problèmes. Je vais donc vous expliquer brièvement ce que je programme: je suis en train de réaliser ou plutôt en train de reproduire l'algorithme snake qui via la création d'un contour initial autour d'un objet désiré sur une image permet d'en obtenir le contour exact à la fin de l'exécution du programme. J'ai au début travaillé sur MicrosoftVisualStudio afin de voir si l'algorithme marchait correctement, et suite à ça, j'ai décidé de basculer sur Qt pour réaliser mon interface graphique car j'ai beaucoup plus d'aisance à code via Qt et pour tout ce qui est rendu graphique de ce type, c'est très puissant et efficace.

Mon problème actuellement, c'est qu'au début je réalisais une lecture de données d'un fichier.dat pré-crée dans mon dossier qui correspond au contour (ici, c'est un cercle). Et j'aimerai que l'utilisateur puisse créer ce cercle par lui même (centre, rayon), et que les valeurs des points du cercle soient écrites dans un fichier.dat que je peux lire ensuite.

Afin de créer mon cercle, je dois commencer par créer le centre du cercle à l'aide d'un point et en m'aidant de QMouseEvent avec mousePressEvent sur un GraphicsScene. Alors oui de ce que j'ai vu je pourrai utiliser QGraphicsMouseEvent, cependant j'ai crée tous mes widgets, mes scenes et view dans un MainWindow, du coup la modification du parent posera plusieurs problèmes, et que je souhaite présenter mon interface ainsi:Nom : Sans titre.png
Affichages : 167
Taille : 128,4 Ko

Ensuite pour créer le rayon, il me semble que je dois utiliser mouseMoveEvent, et enfin pour faire le cercle, avec mouseReleaseEvent.

Une partie de code que j'ai essayé de réaliser est la suivante pour la création du centre du cercle:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
void MainWindow::mousePressEvent( QMouseEvent* event ) {
 
 
    if (event->button() == Qt::LeftButton )
    {xDebut=event->x();
        yDebut=event->y();
scene1.addEllipse(xDebut,yDebut,1,1, QPen(Qt::red));}
 
}
Cependant, lorsque je clique sur la scene1 de gauche, l'affichage rendu du point ne correspond pas du tout à l'endroit où j'ai cliqué, c'est décalé.

L'idéal serait l'idée suivante: sur l'interface que j'ai inséré en image plus haut, on peut voir un bouton "Start contour". J'aimerai avoir la possibilité de créer un point qui soit le centre de l'image dès que je clique sur ce bouton, puis grâce à un MouseEvent, dès que j'ai cliqué sur ce bouton, si j'effectue un clic gauche n'importe où ailleurs sur la scene, que ça corresponde à un point de la circonférence, et après je peux normalement récupérer les données de plusieurs points de ce cercle.

Merci d'avance pour votre aide que vous pourrez m'apporter.