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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Auteur Sujet :

[qt designer] Interface graphique

n°1361811
heyheyhey7​1
Posté le 08-05-2006 à 16:34:25  profilanswer
 

Reprise du message précédent :
et pour  
 
la premire se nomme : image 0000000000.png
et la dernière inqge 0000000666.png  
 
j'ai regardé dans QString mais a par la longeur de caractère je vois pas car moi je fait un QString::number(img);

mood
Publicité
Posté le 08-05-2006 à 16:34:25  profilanswer
 

n°1361902
nargy
Posté le 08-05-2006 à 18:14:43  profilanswer
 

voui, qqchose qui ressemble à:

Code :
  1. ... // constructeur
  2. QTimer::singleShot(0, this, SLOT(Start()));
  3. // fin constructeur


Avec un include de qtimer.h.
 
Pour la conversion int -> QString, utilise QString::arg()
 
Par contre, pas sûr avec ou sans timer que tu ai la visualisation au fur et à mesure du chargement. Dans ce cas, QWidget::update() ou QWidget::paint() peuvent peut être fonctionner.

n°1361903
nargy
Posté le 08-05-2006 à 18:16:05  profilanswer
 

Note: fait de Start() un slot, en ajoutant:
public slots:
devant sa définition.


Message édité par nargy le 08-05-2006 à 18:16:42
n°1362019
IrmatDen
Posté le 08-05-2006 à 21:51:51  profilanswer
 

nargy a écrit :

voui, qqchose qui ressemble à:

Code :
  1. ... // constructeur
  2. QTimer::singleShot(0, this, SLOT(Start()));
  3. // fin constructeur


Avec un include de qtimer.h.
 
Pour la conversion int -> QString, utilise QString::arg()
 
Par contre, pas sûr avec ou sans timer que tu ai la visualisation au fur et à mesure du chargement. Dans ce cas, QWidget::update() ou QWidget::paint() peuvent peut être fonctionner.


Nop, la fonction paint se contente de redessiner le widget quand la boucle d'événements lui demande. Update envoie un signal pour redessiner... Qui ne sera pas traitée tant que tu n'auras pas rendu la main à la boucle d'événement.
 
Edit: t'as vu que t'as un double '/' à la ligne 74, après emilien?
Re-edit: j'insiste, les timer ne servent pas à ça. La solution la plus propre tout en restant simple est l'appel à qApp->processEvent... Ca n'est qu'une ligne à mettre après chaque image chargée, c'est pas la mort, et c'est plus simple que le timer  :whistle:


Message édité par IrmatDen le 08-05-2006 à 21:55:05
n°1362026
nargy
Posté le 08-05-2006 à 22:01:37  profilanswer
 

Exact, je ne voyait pas la chose sous cet angle. C'est en effet beacoup plus simple.

n°1362170
heyheyhey7​1
Posté le 09-05-2006 à 10:27:26  profilanswer
 

mettre la ligne
qApp->processEvent() ne change rien !!
 
que doije fair ?

n°1362197
heyheyhey7​1
Posté le 09-05-2006 à 11:00:42  profilanswer
 

j'ai tester ca placé dans le main()

Code :
  1. QTimer::singleShot(0, &ihm, SLOT(Start()));


 
mais et bien bcp d'erreur

n°1362247
heyheyhey7​1
Posté le 09-05-2006 à 11:47:16  profilanswer
 

j'ai cherché pour mon chiffre mais j'ai toujours rien comme résultat
J'ai cherché plusieur solution mais et bien visiblement je suis pas très bon la dedan lol.
Peux tu me donné la soluce ? je recherche de mon coté

n°1362680
nargy
Posté le 09-05-2006 à 18:13:31  profilanswer
 

> qApp->processEvent() ne change rien !!  
- montre le code, ajoute peut être aussi QLabel::update()/QLabel:: paint()


Message édité par nargy le 09-05-2006 à 18:14:11
n°1363024
heyheyhey7​1
Posté le 10-05-2006 à 10:22:41  profilanswer
 

et bien en faite pour le code, j'ai rajouté juste la ligner
qApp->processEvent(); dans ma boucle do,while juste en dessous de ImageApercu(&Picture,Apercu)

mood
Publicité
Posté le 10-05-2006 à 10:22:41  profilanswer
 

n°1363032
heyheyhey7​1
Posté le 10-05-2006 à 10:28:20  profilanswer
 

Code :
  1. ImageApercu(&Picture,Apercu);
  2. qApp->processEvents();
  3. Apercu->update();


 
mais toujours rien !!!!
Le paint() ne passe pas

n°1363039
heyheyhey7​1
Posté le 10-05-2006 à 10:36:01  profilanswer
 

mais je pense pas qu'il faille faire un QLAbel update ou autre puisque c'est ma fenêtre qui ne s'affiche pas mon IHM qui ne vien que a la fin du chargement de mes iamges.
 
j'ai mis un Fenetre::update() qui passe au compilateur mais toujours rien !!

n°1363041
heyheyhey7​1
Posté le 10-05-2006 à 10:36:38  profilanswer
 

et sinon une idée pour mon problème de chiffre à 10 chiffre avec mon compteur?
pff je suis pir en retard avec cet histoire de fenêtre

n°1363043
heyheyhey7​1
Posté le 10-05-2006 à 10:41:18  profilanswer
 

mais le problème ne peu pas venir du fait que je lance ma fonction start dans le constructeur? je vais tester avec l'appui sur un bouton voir comme ca mon IHM sera déja présente ...

n°1363060
heyheyhey7​1
Posté le 10-05-2006 à 10:49:20  profilanswer
 

c'est bon c'est bon et c'est bon !!!!! ca marche après l'appui sur un bouton !!! comment fair autrement ? sans bouton ?
Et peux tu m'aider pour formé mon chiffre ?  merci
histoire que je rattrappe vite mon retard

n°1363136
heyheyhey7​1
Posté le 10-05-2006 à 11:36:16  profilanswer
 

bon pour le chiffre, j'ai bidouillé une fonction moi même, donc ca marche.
Bon je dois fair une application la plus rapide possible donc si ya un code en une seul ligne pour fair cela, je suis prenneur mais bon la ca marche.
 
J'ai joué avec la longueur de la chaîne puis j'ai mis tout ca dans une boucle

n°1363145
heyheyhey7​1
Posté le 10-05-2006 à 11:39:20  profilanswer
 

http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
voici la suite de mon application, construire une LUT look up table pour ma segmentation HSV de mon image RGB.
 
Comme mis sur le sujet, j'ai récupéré un code mais ya un pti problème sur les bytes.

n°1363165
heyheyhey7​1
Posté le 10-05-2006 à 12:05:12  profilanswer
 

Par contre par la suite, je devrais fair apparaître un rectangle ou une croix une fois le centre de l'objet calculé avec certainement QPaint mais j'avais déja essayé auparavent et a vrai dir, je ni était pas arrivé donc on verra mais déja fait que je fasse la segmentation et avec la LUT que j'ai jamais utilisé, ca va pas être facile...

n°1363866
IrmatDen
Posté le 10-05-2006 à 23:06:07  profilanswer
 

heyheyhey71 a écrit :

c'est bon c'est bon et c'est bon !!!!! ca marche après l'appui sur un bouton !!! comment fair autrement ? sans bouton ?
Et peux tu m'aider pour formé mon chiffre ?  merci
histoire que je rattrappe vite mon retard


Un indice, dans Qt, ça s'appelle la justification à droite...

n°1363873
IrmatDen
Posté le 10-05-2006 à 23:27:47  profilanswer
 

heyheyhey71 a écrit :

bon pour le chiffre, j'ai bidouillé une fonction moi même, donc ca marche.
Bon je dois fair une application la plus rapide possible donc si ya un code en une seul ligne pour fair cela, je suis prenneur mais bon la ca marche.


Bon, je viens de revoir ton code... Tu appelles Start (fct ou tu charges tes images) dans le constructeur. Si on s'en réfère au main (et à la logique d'ailleurs :D ), ta fenêtre est affichée après que sa création soit faite.
Jusque là c'est ok. Mais, quand je t'ai dis que processEvent gères les événements en attente dans la queue d'événement, ça ne t'a pas choqué de le mettre alors que la boucle en elle-même n'est pas encore appelée (app.exec() se charge de lancer cette boucle) ? T'aurais dû me taper dessus pour conseil incomplet ;)
 
Donc pour le mettre en place, tu as 2 solutions:
* implémenter un événement personnalisé en spécialisant QEvent avec un id à toi, et ensuite le traiter dans une réimplémentation de QMainWindow::event()
* ou en réimplémentant QMainWindow::showEvent(), et en conservant un petit flag dans cette fonction (voire dans la classe, là, ça se discute) permettant de savoir si l'événement survient après ton initialisation. Je te laisse lire de très prés la classe QShowEvent pour comprendre le(s) piège(s) :)

n°1365024
heyheyhey7​1
Posté le 12-05-2006 à 13:32:22  profilanswer
 

Bon pour le moment ca marche donc c'est bon ...
 
Le calcul du centre fonctionne bien, mais me reste plus qu'a affiché tout cela sur l'image qui apparaît dans mon apercu, mais j'avais déja essayé auparavent sans y parvenir
 
Donc j'ai mon QLabel qui s'appel APERCU ou j'affiche mon image et par dessus je dois affiché encore une croix selon 2 coordonnée x,y donc je dois faire une fonction auquel je passe ces paramètres. Par contre pour l'utilisation de QPainter et tout, construire une class machin chose, je comprend pas grand chose, comment doije démarrer ?


Message édité par heyheyhey71 le 12-05-2006 à 16:16:32
n°1365126
heyheyhey7​1
Posté le 12-05-2006 à 14:45:25  profilanswer
 

nargy a écrit :

Ok tu as une classe Apercu qui dérive de QLabel, c'est ça?
Il te reste à réimplémenter la fonction virtuelle paintEvent(), qui est appelée quand le widget a besoin d'être affiché:

Code :
  1. class Apercu: public QLabel
  2. {
  3.   ...
  4.   protected:
  5.   void paintEvent(QPaintEvent* e)
  6.   {
  7.     // afficher l'image
  8.     QLabel::paintEvent(e);
  9.     // dessiner la croix:
  10.     QPainter p;
  11.     p.begin (this);
  12.     // repeindre uniquement ce qui est nécessaire
  13.     p.setRegion(e->region());
  14.     // affiche une ligne
  15.     p.drawline(x1,y1,x2,y2);
  16.     // valider
  17.     p.end();
  18.   }
  19. };



 
Le p.setRegion n'est pas bon setRegion visiblement n'existe pas

n°1365285
heyheyhey7​1
Posté le 12-05-2006 à 16:15:48  profilanswer
 

nargy a écrit :

Comme tu ne doit pas avoir l'habitude, je te donne le code à mettre dans les ``...`` ci-dessus:

Code :
  1. public:
  2.   Apercu(QWidget* parent, const char* name=0, WFlags f=0):
  3.     QLabel(parent, name, f) // appeler le constructeur de label
  4.   {}



 
Ceci non plus ne passe pas.
Il n'accepte pas les :
 
Le mieu serai de l'écrire en entière lol, on y verrais plus clair je pense

n°1365438
nargy
Posté le 12-05-2006 à 20:03:13  profilanswer
 

Ben.. j'ai pas grand chose à ajouter...
Je n'ai bien sûr pas tester le code, mais il devrait passer.
N'oublie pas d'inclure qlabel.h.
Le deuxième morceau de code est le construceur, qui fait simplement appel au constructeur d'un QLabel.
Le premier morceau de code est la structure globale de la classe, et la redéfinition de l gestion de l'évènement paint.
Le problème avec le copier/coller c'est que tu risque de ne pas comprendre ce que j'ai écrit. Je te renvoie à la definition de:
QWidget:: paintEvent()
Sinon, pour les erreurs, poste le code de la classe que tu as fait, ainsi que les erreurs et lignes données par le compilo.


Message édité par nargy le 12-05-2006 à 20:03:30
n°1365592
IrmatDen
Posté le 13-05-2006 à 12:21:29  profilanswer
 

heyheyhey71 a écrit :

Le p.setRegion n'est pas bon setRegion visiblement n'existe pas


Il parlait de QPainter::setClipRegion

n°1366343
heyheyhey7​1
Posté le 15-05-2006 à 12:06:12  profilanswer
 

le #include<qlabel.h> est bien inclu !

n°1366356
nargy
Posté le 15-05-2006 à 12:20:02  profilanswer
 

Ça compile:

Code :
  1. #include <qlabel.h>
  2. #include <qpainter.h>
  3. class Apercu: public QLabel
  4. {
  5.   int x1,x2,y1,y2;
  6.   public:
  7.   Apercu(QWidget* parent, const char* name=0, WFlags f=0):
  8.     QLabel(parent, name, f), // appeler le constructeur de label
  9.     x1(0), x2(0), y1(0), y2(0) // init
  10.   {}
  11.   void setCross(int x1_, int x2_, int y1_, int y2_)
  12.   { x1=x1_; x2=x2_; y1=y1_; y2=y2_; }
  13.   protected:
  14.   void paintEvent(QPaintEvent* e)
  15.   {
  16.     // afficher l'image
  17.     QLabel::paintEvent(e);
  18.     // dessiner la croix:
  19.     QPainter p;
  20.     p.begin (this);
  21.     // repeindre uniquement ce qui est nécessaire
  22.     p.setClipRegion(e->region());
  23.     // affiche une ligne
  24.     p.drawLine(x1,y1,x2,y2);
  25.     // valider
  26.     p.end();
  27.   }
  28. };

n°1366461
IrmatDen
Posté le 15-05-2006 à 14:16:04  profilanswer
 

Ben, écoute, c'est pas du tout comme ça que ça marche :/
On t'a déjà expliqué que les événements ne se géraient pas comme ça et l'utilisation que tu fais de Qt est complétement décalée.
 
Je ne saurais que trop te conseiller d'apprendre un peu mieux le C++ pour ce qui est de la méthodologie, et de lire et faire les tutoriaux Qt que tu trouveras dans ta doc.
 
Sinon, Nargy fera tout à ta place et tu ne sauras même pas ce qu'il a fait ni comment l'utiliser :(

n°1366473
heyheyhey7​1
Posté le 15-05-2006 à 14:24:04  profilanswer
 

Et bien pour la classe Apercu, je veux bien être a coté de la plaque mais pour mon IHM alors la ca me ferais bien .... bip .... d'être à coté de la plaque ? NON ?

n°1366481
nargy
Posté le 15-05-2006 à 14:27:48  profilanswer
 

IrmatDen a raison dans un sens, tu ne lis pas assez la doc de Qt. Elle assez claire, précise, et il y a quelques exemples bien utiles. Je reconnais qu'elle est un peu fouillie, et qu'il faut passerr un peu de temps à la parcourrir pour faire le lien entre les différentes classes.
Regarde en premier lieu les exmples fournis avec Qt.

n°1366491
heyheyhey7​1
Posté le 15-05-2006 à 14:37:25  profilanswer
 

ok, je vais regardé ca de près mais ma classe Fenetre qd à elle est bien faite?

n°1366497
nargy
Posté le 15-05-2006 à 14:43:14  profilanswer
 

Les boutons devraient être dans une partie:
private:
Regarde les exemples.

n°1366509
heyheyhey7​1
Posté le 15-05-2006 à 14:58:23  profilanswer
 

bon et bien, je vais refaire mes classe proprement en regardant les exemples donnés

n°1366524
heyheyhey7​1
Posté le 15-05-2006 à 15:13:33  profilanswer
 

Fenetre.h refait
 

Code :
  1. #ifndef FENETRE_H
  2. #define FENETRE_H
  3. #include<qmainwindow.h>
  4. #include<qpushbutton.h>
  5. #include<qimage.h>
  6. #include<qlabel.h>
  7. class Fenetre : public QMainWindow
  8. {
  9.     Q_OBJECT
  10. public :
  11. Fenetre(QWidget *parent=0, const char *name=0);
  12. public slots:
  13.     void Start();
  14.     void ImageApercu(QImage *picture, QLabel *Label);
  15.     void FindCenter(QImage PictureS2);
  16.    
  17. private :
  18.   QPushButton *StartBut;
  19.   QPushButton *QuitBut;
  20.   QLabel *Apercu;
  21.   QLabel *Centerx;
  22.   QLabel *Centery;
  23. };
  24. #endif


 
Je pense qu'il est propre, et vous ?

n°1366546
heyheyhey7​1
Posté le 15-05-2006 à 15:29:57  profilanswer
 

Mon fenetre.cpp ne change pas des masses
 
J'ai donc la définition de tout mes composant de ma fenetre
+ les fonction de traitement qui tourne avec mon application
 
Il ya juste encore le problème d'appuit sur un bouton start pour que mon ihm s'affiche et que mon application démarre.
 
Sans se bouton, mon IHM ne s'affiche pas avant la lecture de la dernière image

n°1366622
nargy
Posté le 15-05-2006 à 16:16:20  profilanswer
 

La fonction Fenetre::ImageApercu():
fait passer en argument plutot une classe Apercu, plutot que QLabel.

n°1366628
heyheyhey7​1
Posté le 15-05-2006 à 16:21:25  profilanswer
 

aïe, j'ai jamais manipulé se genre de chose, je sais pas vraiment comment fair cela mais déja, qd je veux appeler le constructeur de la classe Apercu pour créer le QLabel avec la ligne dedan dans le constructeur de ma fenetre, et je dois pas tapé la bonne ligne de code, ca ne compile pas.

n°1366887
nargy
Posté le 15-05-2006 à 20:06:03  profilanswer
 

Aïe aïe aîe... trouve toi un cours/tuto de C++. Il te manque des bases essentielles: pointeurs, constructeurs/destructeurs, héritage et polymorphisme.

n°1368634
heyheyhey7​1
Posté le 17-05-2006 à 12:18:03  profilanswer
 

Il y a un an que je n'ai pas programmé et je suis pas un fou de la programmation, donc bon ... J'aurais mieu aimer fair autre chose plutôt que de vous embêter pour des trucs qui pour vous sont évident mais je peu pas non plus refaire tout les tutos que je trouve, j'ai qd même une applicaction a faire et je pense aucunement être en avance :( !!

n°1368639
heyheyhey7​1
Posté le 17-05-2006 à 12:21:17  profilanswer
 

Mais je regarde cela de mon coté et j'ai pas mal de code a coté don je ne parle pas car je maîtrise mieu lol...
Le code que j'ai sur mon appli n'est pas que celle qui circule sur le forum, celle qui circule sur le forum n'est que un apercu graphique de tout le reste ... Mais votre aide a été la bien venu Merci !!

n°1368644
heyheyhey7​1
Posté le 17-05-2006 à 12:23:23  profilanswer
 

Mais pour le coup de créer cet croix sur mon QLabel me pose pas mal de problèmes !! j'en conviens lol...

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4

Aller à :
Ajouter une réponse
 

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-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)