Bonjour,
je dois programmer des graphes(UML,Merise,Triangle,Rectangle,Cercle...)en C++.
pour le moment j'ai aucune idée pour commencer et j'ai besoin d'aide.
s'il ya quelqu'un qui s'y connait unpeu,il est la bienvenue.
Merci
Version imprimable
Bonjour,
je dois programmer des graphes(UML,Merise,Triangle,Rectangle,Cercle...)en C++.
pour le moment j'ai aucune idée pour commencer et j'ai besoin d'aide.
s'il ya quelqu'un qui s'y connait unpeu,il est la bienvenue.
Merci
Salut,
Tout dépend de la version de Qt que tu peux utiliser:
> 3.x: QCanvas
> 4.2+: QGraphics* (QGraphicsScene, QGraphicsView, QGraphicsItem...)
Si tu as la 4.0 ou 4.1, tu peux soit utiliser la classe Q3Canvas, soit développer ton propre widget. La première possibilité étant à éviter pour ce qui est de l'extensibilité de ton programme, la classe QCanvas étant dépréciée avec le passage à Qt4.
j'ai la version Qt4.2.1
Les classes QGraphics* sont ta voie alors :)
bonjour,
j'aimerai ecrire un texte ds un graphe que j'ai fait et je sais pas trop par où commencé.
le texte sera par defaut "association" et ke je pourrai le changer.
ps: vous pouvez voir le graphe dans le fichier joint.
Merci de votre comprehension.
Aïe, ça, c'est le sujet qui pose problème :p
Les items texte dans QGraphics avec 4.2 ne sont pas disponibles. Tu as 2 possibilités:
> créer un pixmap où tu dessines ton texte, puis tu l'affiches avec un QGraphicsPixmapItem
> utiliser Qt4.3 rc1 dans laquelle est inclus une telle possibilité (pour avoir un aperçu de comment c'est fait, lire le blog de trolltech labs)
j'ai pas bien compris,je l'ajoute directement à mon prog ou g dois créer un new prog pour le texte
Ben, soit tu met à jour ta version de Qt vers une version qui est une candidate à la définitive, soit tu attends la 4.3 définitive.
Soit tu restes à la 4.2.1 et tu ajoutes dans ton prog une classe qui s'appellerait par exemple GraphicsLabel qui dériverait de QGraphicsPixmapItem et à laquelle tu ajouterais une méthode setText(QString label) qui se chargerait de créer un QPixmap avec le texte voulu.
Est ce que tu p me faire un aperçu du prog avec QT 4.2
Non, pas le temps là, j'ai du boulot :/
Par contre, pour te donner des pistes, regarde du côté de:
> QGraphicsPixmapItem pour la partie... item/QGraphicsScene :)
> QPixmap pour l'affichage du label,
> QPainter pour le dessin du texte
> QFontInfo et QFont pour calculer la taille du pixmap à partir de ta chaîne et de la police à utiliser
ok merci bcp,je vais voir ce que je peux faire
slt,
j'arrive toujours pas à ecrire le texte et s'il vous plait aidez-moi.
Merci
Ok, montre ce que tu as fait alors stp.
jai ajouté:painter.drawText(rect(), Qt::AlignCenter, "Association");dans
void SortingBox::paintEvent(QPaintEvent * /* event */) mais il ne m'affiche que le texte sur l'ecran pas dans l'ellipse.
Montre le code de SortingBox::paintEvent stp.
Tu as une raison particulière pour ne pas utiliser les classes QGraphics* alors? Ca m'a l'air plus adapté que des widgets :/
ok,voici le code:
void SortingBox::paintEvent(QPaintEvent *)
{ QPainter painter(this);
foreach (ShapeItem shapeItem, shapeItems) {
painter.translate(shapeItem.position());
painter.setBrush(shapeItem.color());
painter.drawPath(shapeItem.path());
painter.translate(-shapeItem.position());
painter.drawText(QRect(0,0,150,50),Qt::AllignCenter,"Association");
}
}
Ben, d'après ton code, tu l'affiches avec un rect configuré avec des valeurs absolues, donc il est possible que tu le dessines en dehors.Citation:
mais il ne m'affiche que le texte sur l'ecran pas dans l'ellipse.
Sinon, tu peux toujours poster un screen du résultat obtenu maintenant, et éventuellement un screen traffiqué pour correspondre à ce que tu veux. On gagnera du temps en explication ;)
Mais là, tu vas perdre un temps fou à ne pas utiliser les QGraphics... Enfin, pour ce que j'en dis :?
voila j'ai afiché le texte ds le cercle mais je voudrais cliké la dessus pour pouvoir changer le texte mais j'arrive pas.
voila le code:
Tout dépend ce que tu veux faire, t'es pas super clair dans tes description :s
De but en blanc, je te dirais d'appeler un QInputDialog dans ton mousePressEvent, c'est une façon simple et efficace de demander une valeur à l'utilisateur.
g pa bien capté.
pour le texte je veux pouvoir cliker dessus et après changer le texte pr le remplacer.
si tu pouvais mieux m'expliquer le QInputDialog.
Merci