Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1497 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [qt designer] Interface graphique

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Page Précédente
Auteur Sujet :

[qt designer] Interface graphique

n°1349385
heyheyhey7​1
Posté le 19-04-2006 à 10:26:09  profilanswer
 

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

mood
Publicité
Posté le 19-04-2006 à 10:26:09  profilanswer
 

n°1349436
nargy
Posté le 19-04-2006 à 11:18:43  profilanswer
 

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.


Message édité par nargy le 19-04-2006 à 11:18:57
n°1349547
heyheyhey7​1
Posté le 19-04-2006 à 12:28:53  profilanswer
 

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...

n°1349568
nargy
Posté le 19-04-2006 à 13:03:59  profilanswer
 

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.

n°1349668
heyheyhey7​1
Posté le 19-04-2006 à 14:40:37  profilanswer
 

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

n°1349874
nargy
Posté le 19-04-2006 à 17:00:56  profilanswer
 

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:

  • Qt est composé de différents modules, plutôt indépendants les uns des autres, avec un module central composé de classes généralistes: QString, Q*List, Q*Map, QImage, QMovie, etc...
  • la classe de base est QObject, presque toutes les classes en dérivent, QObject sert à créer une arborescence d'objets, et gère la désallocation,
  • Qt possède un générateur externe (qmake), qui gère les fichiers moc et ui, avec lequel tu peut créer tes classes Object,
  • la particularité de Qt est de gérer les évènement avec des signaux et des slots (voir Q_OBJECT), le générateur de makefile qmake sert notamment à repérer dans tes sources les signaux et les slots, les signaux et les slots sont des fonctions membres qui se connectent entre elles,
  • la classe de base des widgets est QWidget, presque toutes les représentation graphiques en dérivent: QFrame, QLineInput, QListBox, QCheckBox, QPushButton, etc... Un QWidget est un espace rectangulaire sur l'écran, et possède une myriade de propriétés liées à la représentation graphique, à la gestion de la souris et du clavier, etc...
  • Qt gère aussi certains évènements plus classiquement grâce à des fonctions virtuelle protégées,
  • Qt possède plein de classes de haut niveau pour créer facilement de présentations standard, comme des fenêtres avec menus, des tableaux comme les tableurs (excel), des navigateurs HTML2, etc...


C'est loin d'être exhaustif.

n°1350397
heyheyhey7​1
Posté le 20-04-2006 à 12:52:55  profilanswer
 

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....

n°1350429
nargy
Posté le 20-04-2006 à 13:32:45  profilanswer
 

> 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à.

n°1350568
heyheyhey7​1
Posté le 20-04-2006 à 15:53:12  profilanswer
 

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 ....

n°1350579
kirua_sama
Learn sciences with senses
Posté le 20-04-2006 à 16:10:10  profilanswer
 

tu peux envoyer le tutos ....

mood
Publicité
Posté le 20-04-2006 à 16:10:10  profilanswer
 

n°1350580
nargy
Posté le 20-04-2006 à 16:10:17  profilanswer
 

k, bon courage :)

n°1350620
heyheyhey7​1
Posté le 20-04-2006 à 16:49:16  profilanswer
 
n°1350622
heyheyhey7​1
Posté le 20-04-2006 à 16:49:48  profilanswer
 

je trouve que c'est très bien fait mais après en avoir écris 8; je me suis arrêter lol ....

n°1350627
heyheyhey7​1
Posté le 20-04-2006 à 16:52:57  profilanswer
 

sinon j'ai essayé un codage pour afficher une image :

Code :
  1. dans la class MyWidget
  2. QImage first;
  3. first.load("image.png" );
  4. QPixmap *image = new QPixmap (first).


 
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

n°1350647
heyheyhey7​1
Posté le 20-04-2006 à 17:07:11  profilanswer
 

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

n°1350668
nargy
Posté le 20-04-2006 à 17:31:56  profilanswer
 

Code :
  1. QImage first;
  2.     first.load("image.png" );
  3.     QPixmap *image = new QPixmap (first);
  4.     QVBoxLayout* layout=new QVBoxLayout(this);
  5.     QLabel* affichage=new QLabel(this);
  6.     affichage->setPixmap(image);
  7.     layout->addWidget(affichage);


Message édité par nargy le 20-04-2006 à 17:32:38
n°1351012
heyheyhey7​1
Posté le 21-04-2006 à 10:40:24  profilanswer
 

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 ?

n°1351020
nargy
Posté le 21-04-2006 à 10:44:34  profilanswer
 

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.

n°1351048
heyheyhey7​1
Posté le 21-04-2006 à 11:10:33  profilanswer
 

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 :)

n°1351335
heyheyhey7​1
Posté le 21-04-2006 à 15:45:48  profilanswer
 

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..


Message édité par heyheyhey71 le 21-04-2006 à 15:46:00
n°1351360
heyheyhey7​1
Posté le 21-04-2006 à 16:11:58  profilanswer
 

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

n°1351392
nargy
Posté le 21-04-2006 à 16:47:09  profilanswer
 

> printf le FilePath..

Code :
  1. QString s="Hello";
  2. printf("%s\n",(const char*)s);


n°1351398
nargy
Posté le 21-04-2006 à 16:49:49  profilanswer
 

> 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.

n°1352064
IrmatDen
Posté le 23-04-2006 à 00:58:24  profilanswer
 

nargy a écrit :

> printf le FilePath..

Code :
  1. QString s="Hello";
  2. printf("%s\n",(const char*)s);



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 ;)

n°1352071
nargy
Posté le 23-04-2006 à 01:04:54  profilanswer
 

ok, dac, tu as raison, (const char*)QString peut planter s'il s'agit d'une variable temporaire.

n°1352426
IrmatDen
Posté le 23-04-2006 à 23:16:26  profilanswer
 

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  :??:

n°1352462
nargy
Posté le 24-04-2006 à 00:17:49  profilanswer
 

si tu fait par exemple:

Code :
  1. printf("%s\n",(const char*) QString("hello" ).replace(QChar('e'),QChar('i')));


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.

n°1352475
IrmatDen
Posté le 24-04-2006 à 01:19:32  profilanswer
 

Ah oki, j'ai jamais cherché à faire ce genre de soupe :D
 
Edit: cat C++ oblige, std::cout powaa! (même si ça ne change probablement rien à ton bug :) )


Message édité par IrmatDen le 24-04-2006 à 01:22:24
n°1352481
nargy
Posté le 24-04-2006 à 02:38:56  profilanswer
 

bref, qDebug() avec Qt. En plus c'est censé gérer l'unicode.

n°1352868
heyheyhey7​1
Posté le 24-04-2006 à 16:55:26  profilanswer
 

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?

n°1352885
nargy
Posté le 24-04-2006 à 17:10:36  profilanswer
 

fonction statique: QString::number()

n°1353375
heyheyhey7​1
Posté le 25-04-2006 à 11:00:44  profilanswer
 

et pour mettre dans un label :
center->setText("x:"QString::number(x));
 
je sais que ce code et faut, si tu as la soluce?

n°1353427
nargy
Posté le 25-04-2006 à 11:45:04  profilanswer
 

QString::operator + (const QString&, const QString& ):
 
center->setText("x:" + QString::number(x));
 
Note: lit la doc de QString ;)

n°1353438
heyheyhey7​1
Posté le 25-04-2006 à 11:55:14  profilanswer
 

ok la j'avais demander un peu trop vite lol, j'avais trouvé sorry...
 
Me reste a afficher une croix à x et y.

n°1353472
nargy
Posté le 25-04-2006 à 12:12:46  profilanswer
 

Regarde du côté de QPainter.

n°1354118
heyheyhey7​1
Posté le 26-04-2006 à 10:37:37  profilanswer
 

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 :
  1. QPainter p;
  2. P.begin (this);
  3. p.drawline(x1,y1,x2,y2);
  4. p.end()


 
Mais comment lui dir de mettre cela sur le label ?
 
merci

n°1354177
nargy
Posté le 26-04-2006 à 11:20:55  profilanswer
 

Code :
  1. QPainter ( const QPaintDevice * pd, bool unclipped = FALSE )


Citation :


The QWidget class is the base class of all user interface objects. More...  
#include <qwidget.h>  
Inherits QObject and QPaintDevice.  


n°1354182
nargy
Posté le 26-04-2006 à 11:22:50  profilanswer
 

Voir aussi la doc de:
void QWidget:: paintEvent ( QPaintEvent * ) [virtual protected]


Message édité par nargy le 26-04-2006 à 11:23:04
n°1354227
heyheyhey7​1
Posté le 26-04-2006 à 12:02:22  profilanswer
 

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


Message édité par heyheyhey71 le 26-04-2006 à 12:03:00
n°1354259
nargy
Posté le 26-04-2006 à 12:37:27  profilanswer
 

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.


Message édité par nargy le 26-04-2006 à 12:38:43
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [qt designer] Interface graphique

 

Sujets relatifs
methode pour créer une interfaceProblème avec fenêtre graphique
[VBA][Excel] Help ! Problème avec graphique[VBA] [Excel] Chercher la première ligne après un graphique
Interface et classes abstraites en php5 et php6[qt designer] Calcul du centre d'un objet
Question de débutant. Interface HTML pour mes scripts perl ???Créer une interface graphique en c
installer une interface https ? 
Plus de sujets relatifs à : [qt designer] Interface graphique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR