Interface graphique [qt designer] - C++ - Programmation
Marsh Posté le 19-04-2006 à 11:18:43
Pour afficher à la fois des images et des figures géométriques, utilise un canvas. J'ai posté un code recemment si tu veux un exemple.
QtDesigner ne gère pas les canvas, mais tu peut y ajuster d'autres widgets. Le principe de base est de mettre des layouts (qui calculent automatiquement le positionnement et la taille des widgets), et des widgets.
QMake (shell: qmake) compile les fichiers .ui faits par QtDesigner.
Pour la doc, tu as QtDoc (shell: qtdoc), et une aide en ligne de QtDesigner.
Marsh Posté le 19-04-2006 à 12:28:53
c'est a dir que pour le moment j'ai fait un load de l'image à traiter puis un seuillage puis un save de l'image résultat.
Et j'ai regardé, il ya la fonction Qrect pour tracer un rectangle mais pour le moment j'ai rien développé en interface graphique et je cherche une personne qui pourrai m'aider déja a affiché cet image dans un canvas puis ensuite j'essairai de tracé un rectangle
mais ce que je comprends pas, c'est qu'il faut bien que je spécifi que je trace le rectangle sur mon interface graphique ?
Merci d'expliqué le plus simplement possible car déja les widgets, j'ai jamais utilisé, je sais pas trop ce que c'est...
Marsh Posté le 19-04-2006 à 13:03:59
ho chaud... widget est une contraction de window+gadget. Les boutons, fenêtres, boîtes, images etc... d'un système de fenêtrage sont appelés widgets.
Il te faudrait un tuto, je n'en connais pas mais il me semble que tu en trouvera une tonne sur le net.
Sinon, tu peut commencer par lire un peu la doc de Qt, il y a quelques tutos et des exemples inclus.
Marsh Posté le 19-04-2006 à 14:40:37
c'est ce que je fai tinkiète pas je cherche mais bon si quelqu'un connais bcp mieu le truc que moi pour me facilité la tâche, je suis ouvert lol
Marsh Posté le 19-04-2006 à 17:00:56
ben, je commence à masteuriser Qt, mais j'utilise rarement Qt Designer, je me fait mes présentations à la main.
Si tu as des questions particulières n'hésite pas. Pour ce qui est des questions générale sur le fonctionnement d'une interface graphique, il te faut un tuto sur le web parcequ'il y a beaucoup trop à dire.
Si tu veux je peut te résumer Qt:
C'est loin d'être exhaustif.
Marsh Posté le 20-04-2006 à 12:52:55
ok ok, mais ya un truc que je pige pas, c'est que certain tape un code pour avoir l'interface graphique qu'alors les menus citué à gauche contienne des composant graphique? .
Sinon pour afficher juste une image, quel composant utiliser et ou placé le code.
J'ai vu PixmapLabel, je pense que je peu utilisé celui ci pour affiché mon image pixel par pixel mais au niveau codage, j'ai un peu des fenêtre de partout, mais je pense que le code pour utiliser ce composant devra ce cituer dans le main()
Dite moi si je me trompe....
Marsh Posté le 20-04-2006 à 13:32:45
> ok ok, mais ya un truc que je pige pas, c'est que certain tape un code pour avoir l'interface graphique qu'alors les menus citué à gauche contienne des composant graphique?
- je ne suis pas sûr de comprendre la question à cause des fôtes. QtDesigner sert à mettre en place tes widgets, puis transforme en code ton interface graphique. Pour faire effectuer des opérations à ton programme, tu doit coder toi-même les fonctions necessaires, QtDesigner ne le fait pas à ta place. Au début j'utilisait QtDesigner, mais maintenant je m'en passe souvent en faisant le code de l'interface graphique à la main.
> J'ai vu PixmapLabel, je pense que je peu utilisé celui ci pour affiché mon image pixel par pixel
- exact, tu peut utiliser un PixmapLabel.
> je pense que le code pour utiliser ce composant devra ce cituer dans le main()
- ho non, fait plutôit une classe par widget. Pour chaque composant que tu modèle fait un fichier .h, un fichier .cpp, et mets y une classe qui dérive de l'une des classes de Widget sur laquelle tu claque le comportement de ton widget: par ex. QMainWindow, QLabel, QFrame, ou carrément QWidget si ton widget n'a rien à voir avec ce qui existe déjà.
Marsh Posté le 20-04-2006 à 15:53:12
ok j'ai trouvé un super tuto, je vais tout le fair comme ca ca ira mieu...
C'est tout du code à tapé aller je suis parti lol ....
Marsh Posté le 20-04-2006 à 16:49:48
je trouve que c'est très bien fait mais après en avoir écris 8; je me suis arrêter lol ....
Marsh Posté le 20-04-2006 à 16:52:57
sinon j'ai essayé un codage pour afficher une image :
Code :
|
mais voila, qd j'execute mon progr, il s'affiche un fenêtre sans rien dedans??
que fair ? et je suis certain que limage et belle et bien chargé car j'ai déja testé pour le load
Marsh Posté le 20-04-2006 à 17:07:11
non en faite, on ma fait un programme qui créer une image en RGB donc j'ai oublier quelque ligne de code ci dessus mais même si je fait un copier coller de tout le code qui marche nikel, et bien j'ai le même résultat, donc et bien ca marche pas ... snif
Marsh Posté le 20-04-2006 à 17:31:56
Code :
|
Marsh Posté le 21-04-2006 à 10:40:24
ok merci c super sympa de m'aider car bon moi j'ai jamais programmé la dessus donc c pas simple.. enfin bon j'avais déja 3 ligne de juste mdr, c'est un debut. Et sinon, juste une question, je dois appliqué des filtres morphologique pour le débruitage de mon image seuiller puis calculé le centre et la surface de mon objet trouvé (valeur 255 pour le pixel) et tout le reste reste a 0. Mais je ne vois pas de filtre ou autre d'intégré sur qt designer, je dois tout fair moi même ? et sinon pour le centre et la surface pareil ?
Marsh Posté le 21-04-2006 à 10:44:34
alors oui, Qt il est pas prévu pour faire des manipulations d'images, juste les trucs basiques (tu peut coder des filtres graphiques toi même).
Utilise plutôt une bibliothèque d'image. Sous linux je te conseilles ImageMagick qui est très complet.
Marsh Posté le 21-04-2006 à 11:10:33
j'ai trouvé sur le net en cherchant toute la matinée un programme développé sur qt designer avec pas mal de filtre morphologique, donc je pense que ca va me simplifié un peu la tâche, c'est pas mal qd les thésard partage leur source
Marsh Posté le 21-04-2006 à 15:45:48
bon il faut se rendre a l'évidence, mon programme ne marche pas pfffff, c'est pas cool..
Je choisi mon image à l'aide du QFileDialog, se qui me donne un FilePath, puis je fait un Qimage Picture; et Picture.load(FilePath);
Comment déja vérifier que cet partie la est correcte?
je n'arrive pas a affiché avec un printf le FilePath..
Marsh Posté le 21-04-2006 à 16:11:58
non, c'est bon ca marche, c'était un autre composant qui recouvrai mon image (et dir que j'ai chercher pendant une journée entiere) enfin bon
Marsh Posté le 21-04-2006 à 16:47:09
ReplyMarsh Posté le 21-04-2006 à 16:49:49
> non, c'est bon ca marche, c'était un autre composant qui recouvrai mon image (et dir que j'ai chercher pendant une journée entiere) enfin bon
- utilise un qlayout, ça te permet de disposer les widgets automatiquement sans qu'ils se recouvrent, avec QtDesigner dans le menu layout: Ctrl+H, Ctrl+L, Ctrl+G.
Marsh Posté le 23-04-2006 à 00:58:24
nargy a écrit : > printf le FilePath..
|
Je vous conseillerais plutôt le qDebug(). Ca vous évitera les galères de soupe C/Qt (genre les problèmes de codec).
Sans compter que dans Qt4, le qDebug devient considérer comme un flux, ce qui devient mille fois plus pratique à écrire
Marsh Posté le 23-04-2006 à 01:04:54
ok, dac, tu as raison, (const char*)QString peut planter s'il s'agit d'une variable temporaire.
Marsh Posté le 23-04-2006 à 23:16:26
nargy a écrit : ok, dac, tu as raison, (const char*)QString peut planter s'il s'agit d'une variable temporaire. |
Là, je ne te suis pas du tout
Marsh Posté le 24-04-2006 à 00:17:49
si tu fait par exemple:
Code :
|
tu obtient un joli segfault car l'expression QString(...).replace(...) retourne un QString temporaire, tu la convertit en (char*), puis la QString temporaire est détruite puisque tu n'en a plus besoin, et enfin tu execute le printf. Du coup le (char*) a disparu avant le printf.
Si ton compilateur ne se comporte pas de cette façon (ça arrive avec les vieux compilos) il n'est pas conforme.
Marsh Posté le 24-04-2006 à 01:19:32
Ah oki, j'ai jamais cherché à faire ce genre de soupe
Edit: cat C++ oblige, std::cout powaa! (même si ça ne change probablement rien à ton bug )
Marsh Posté le 24-04-2006 à 02:38:56
bref, qDebug() avec Qt. En plus c'est censé gérer l'unicode.
Marsh Posté le 24-04-2006 à 16:55:26
oki oki, j'ai résolu ce problème mais comment afficher un float dans un label ? avec le setText(); il faut je pense convertir le float en Qstring mais quel est la ligne de code svp?
Marsh Posté le 25-04-2006 à 11:00:44
et pour mettre dans un label :
center->setText("x:"QString::number(x));
je sais que ce code et faut, si tu as la soluce?
Marsh Posté le 25-04-2006 à 11:45:04
QString::operator + (const QString&, const QString& ):
center->setText("x:" + QString::number(x));
Note: lit la doc de QString
Marsh Posté le 25-04-2006 à 11:55:14
ok la j'avais demander un peu trop vite lol, j'avais trouvé sorry...
Me reste a afficher une croix à x et y.
Marsh Posté le 26-04-2006 à 10:37:37
j'ai regardé QPainter et aussi drawline mais ya un truc que je comprend pas ... Peu être ca te paraitra débile mais bon on a pas tous la même connaissance.
Il faut bien que je fasse un drawline sur mon Label ou j'affiche l'image?
Code :
|
Mais comment lui dir de mettre cela sur le label ?
merci
Marsh Posté le 26-04-2006 à 11:20:55
Code :
|
Citation : |
Marsh Posté le 26-04-2006 à 11:22:50
Voir aussi la doc de:
void QWidget:: paintEvent ( QPaintEvent * ) [virtual protected]
Marsh Posté le 26-04-2006 à 12:02:22
Je suis daccord qu'il faut utiliser QPainter pour tracer des lignes, ok, QPainter::drawLine ( int x1, int y1, int x2, int y2 )
Mais le truc c'est que moi je travail sur un QImage ou un QLabel.
Mais je ne voi pas comment je peu fair pour afficher ce paint sur mon QLabel
Marsh Posté le 26-04-2006 à 12:37:27
tu passe au constructeur du QPainter le QLabel sur lequel tu veux dessiner,
tu overload la fonction paintEvent pour qu'après avoir dessiné l'image (appel à QLabel:: paintEvent), elle dessine par dessus le dessin du QPainter.
ah oui, tu doit créer ta propre classe MyQLabel, héritant de QLabel, pour l'overload.
Marsh Posté le 19-04-2006 à 10:26:09
Voila je devrai développer une interface graphique avec qt designer pour afficher une image , ainsi que son centre marqué d'une croix puis aussi une forme entourent l'objet détecté.. Je n'ai jamais développé sur ce logiciel, donc si vous pouvez m'aider, ca serais super sympa
Merci