C++ QT QCanvasEllipse

C++ QT QCanvasEllipse - C++ - Programmation

Marsh Posté le 11-04-2003 à 18:38:14    

Voila j'ai un probleme
 
Je voudrais créé un QCanvasEllipse transparent avec juste le contour en pointillé... est-ce Possible et comment on fait dans ce cas la ?
 
 
je voudrais savoir aussi comment obtenir les coordonnées de la souris par rapport a l'origine du canvas lorsque la souris passe sur le QCanvasView. Methode ? astuce ?
 
Merci de votre aide


Message édité par vince_223 le 11-04-2003 à 18:49:52
Reply

Marsh Posté le 11-04-2003 à 18:38:14   

Reply

Marsh Posté le 11-04-2003 à 19:10:59    

pour le QCanvasEllipse, tu changes le pen utilisé par setPen en mettant le style que tu veux pour le QPen. pour la transparence, je crois pas que ce soit possible directement. faut que tu te le fasses toi meme.
 
pour les coordonées de la souris, tu surcharges la méthode mouseMoveEvent (QMouseEvent *e) et tu as les coordonées avec e->pos () (ou e->globalPos () pour les coordonées en global).

Reply

Marsh Posté le 12-04-2003 à 00:28:49    

gloop a écrit :

pour le QCanvasEllipse, tu changes le pen utilisé par setPen en mettant le style que tu veux pour le QPen. pour la transparence, je crois pas que ce soit possible directement. faut que tu te le fasses toi meme.
 
pour les coordonées de la souris, tu surcharges la méthode mouseMoveEvent (QMouseEvent *e) et tu as les coordonées avec e->pos () (ou e->globalPos () pour les coordonées en global).
 


 
Le probleme, c'est quand je fais :  
cercle1->setPen(QPen(Qt::black,1,Qt::DashLine));
cercle1->setBrush(Qbrush(Qt::white,Qt::NoBrush));
IL n'y a rien qui s'affiche... (comprend pas pkoi)
 
Mais si je fais
cercle1->setPen(QPen(Qt::black,1,Qt::DashLine));
cercle1->setBrush(QBrush(Qt::lightGray,Qt::SolidPattern));
j'obtient un disque plein de couleur grise, mais toujours pas de contour en pointillés
 
 
Sinon pour les coordonnée de la souris, j'ai essaye ces 2 methodes, mais j'obtient pas le resultat voulu.
Les coordonnées sont retournées a partir de l'origine du QCanvasView, moi il me les faudrait a partir de l'origine du canvas, qui est plus grand que le QcanvasView.
est ce qu'il existe une methode qui fais ca, ou alors je dois le calculer a partir des scrollbars du QCanvasView ?
 
Merci quand meme gloop


Message édité par vince_223 le 12-04-2003 à 00:31:23
Reply

Marsh Posté le 12-04-2003 à 00:30:03    

up


Message édité par vince_223 le 12-04-2003 à 00:30:46
Reply

Marsh Posté le 12-04-2003 à 09:13:58    

en regardant dans la doc, c'est normal que t'ais pas le trait  que tu veux, QCanvasEllipse n'utilise pas le pen.
pour tes coordonnées, tu peux utiliser la méthode QPoint QWidget::mapToParent (const QPoint &pos) const qui retourne les coordonnées du point pos du widget dans son parent.

Reply

Marsh Posté le 12-04-2003 à 09:33:25    

Oki merci pour mapToParent, faut que j'essaye avec ca
 
sinon pour mon QCanvasEllipse, il est en fin de compte impossible de dessiner que le contour de mon cercle, non ?


Message édité par vince_223 le 12-04-2003 à 09:33:59
Reply

Marsh Posté le 12-04-2003 à 10:04:58    

faut le faire toi meme. le plus simple est de dériver de QCanvasEllipse et de surcharger virtual void drawShape ( QPainter & p ) en utilisant la méthode drawEllipse

Reply

Marsh Posté le 12-04-2003 à 12:04:37    

oki
 
j essayé mapToParent, mais il me donne les coordonnées qui ont pour origine mon widget et pas le canvas
 
sinon comment fais t on pour modifier les valeur min, max et le linesStep des scrollbars du QCanvasView
j'utilise une classe qui herite de QcanvasView pour pouvoir utiliser les methodes mouseMoveEvent et mousPressEvent et j'arrive pas a modifier ces proprietés  :fou:
 
quand on fait un scrollbar1->value() et la scrollbar en question est une des scrollbar du QCanvasView, a quoi correspond la valeur retournée ?

Reply

Marsh Posté le 12-04-2003 à 12:12:36    

je comprends pas ton probleme de coordonées  
pour tes scrollbars t'as pas à modifier les min/max/linestep.
si tu veux te déplacer dans le QCanvasView (qui hérite de QScrollView), utilise les méthodes scrollBy et center

Reply

Marsh Posté le 12-04-2003 à 13:50:47    

Bah en fait , je souhaiterai obtenir les coordonnées de la souris par rapport a l'origine du canvas, et non pas par rapport a l'origine du canvasView.

Reply

Marsh Posté le 12-04-2003 à 13:50:47   

Reply

Marsh Posté le 12-04-2003 à 13:57:26    

regarde les fonctions contentsToViewport et viewportToContents de QScrollView

Reply

Marsh Posté le 12-04-2003 à 17:25:16    

oki bah je regarde ca et je refais un post si j'y arrive pas
 
Merci beaucoup pour les precisions

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed