Vous n'êtes pas identifié(e).
Qt 4: 4.8.4 - Qt 5: 5.0.2 - Qt Creator: 2.7.1 - Qt Installer: 1.3.0 - VS Qt 4: 1.1.11 - VS Qt 5: 1.2.1 - Monkey Studio: 1.9.0.4
bonsoir tout le monde
mon projet comporte 3fichiers sans comptant le fichier.pro , main.cpp , mainwindow.cpp , mainwindow.h
mon main.cpp est programmé ainsi :
mon mainwindow.cpp est ainsi programmé :
et mon mainwindow.h est ainsi programmé :
Mon problème est le suivant
comme erreurs il m'affiche
1) tab / s / gray / compt has not been declared
2)width/height is not a type
or que j'ai bien déclaré dans le main.cpp à partir de la ligne 33 donc voilà quelqu'un pourrait me dire pourquoi il ne les reconnais pas or que le programme commence toujours par compilé depuis le main.cpp
j'ai oublié de préciser que mon problème réside dans la fonction MainWindow::buildtab du fichier mainwindow.cpp précisément le passage des arguments tab s gray height width compt qui ont étaient bien déclaré dans le fichier main.cpp
l'erreur se situe dans la ligne 46 du fichier mainwindow.h
n'importe quelle repense sera la bienvenue et merci d'avance
cordialement .
Dernière modification par Elendile (08-05-2012 22:29:34)
Hors ligne
Salut,
Tu développe d'une façon un peu "bizarre" à mon goût, déjà pour le width et height, comment il peut récupérer une valeur grâce à grey->width() ? Je pense que cette variable a été créée, initialisée et remplie dans ton mainwindows ? Tu dois donc utiliser des accesseurs pour récupérer cette variable.
Du coup tu feras un w.getGray->width();
La fonction getGray sera à développer pour faire un return de ton gray.
Et pour ton slot, il ne connait pas les "types" donc
tab est remplacé par ton tableau int[], width par int, height par int .... Il ne veut rien savoir du nom que tu donneras à tes variables mais leur typage ;-).
Exemple :
Dernière modification par p3p3te (08-05-2012 22:37:36)
Hors ligne
est ce que les ok sont des arguments ?! donc je doit mettre void buildtab(int** tab,int width,int height,CvScalar s,IplImage* gray,int &compt) ou j'ecrit juste leur type dans le mainwindow.cpp !
pareil pour la connection
QObject::connect(actionBuild, SIGNAL(triggered()), this, SLOT(buildtab(int** tab,int width,int height,CvScalar s,IplImage* gray,int &compt)));
ou bien j'écrit que leur type car il m'affiche des erreurs à ce niveau là .
Hors ligne
Hum dans la déclaration de tes slots ce sera toujours avec les types comme tu l'as décrit.
Ensuite il te faut savoir que pour un SIGNAL donné, ton slot devra posséder autant de variable ... En l’occurrence ici ton triggered() n'en possède aucun donc il ne pourra pas appeler ton slot.
Dans ce cas tu définis un slot intermédiaire sans paramètre que le signal triggered appelera puis dans ce slot, tu feras toi même appel à la fonction buildtab en lui passant en paramètre tout ce que tu désires.
J'ai pu t'éclairer ? C'est vrai que ça parait simple pour moi mais pour d'autres peut-être moins, n'hésite pas à poser des questions et du code rafraichi ;-).
Dernière modification par p3p3te (08-05-2012 23:21:37)
Hors ligne
pour les connexions j'ai mis sa :
et pour la fonction reception :
cependant il me dit que tab s gray compt ne sont pas déclaré on this scope il les reconnait pas ils sont à l'interieurs de MainWindow::receptionTriggered()
Hors ligne
je me suis bien creusé la tête j'ai aboutis à sa mais c'est toujours pareil il me dit comme erreurs :
QObject::connect: Incompatible sender/receiver arguments
QAction::triggered() --> MainWindow::receptionTriggered(int**,int,int,CvScalar,IplImage*,int&)
Object::connect: No such signal QAction::receptionTriggered(int**,int,int,CvScalar,IplImage*,int&) in ..\pfe\mainwindow.cpp:54
voilà se que j'ai rajouté
dans mon fichier mainwindow.cpp
l'erreurs est dans la ligne N°2 là 2eme Qobjet::connect
pour mon mainwindow.h aucun problème j'ai rajouté le receptiontrigged comme ceci
Hors ligne
Salut,
Dans un premier temps, regardes la doc signal/slot à l'adresse http://www.siteduzero.com/tutoriel-3-11 … slots.html
C'est pas mal fait.
Tu verras qu'il faut les mêmes arguments entre les signaux et slots.
Ensuite ta QAction (actionBuild) n'a effectivement pas de signal receptionTriggered voir la doc de QAction.
Pour le rajouter, il faut coder une class qui dérive de QAction et qui possède ce signal.
Attention, les signaux doivent être déclarés dans une section appelée signals et le slots dans private/public slots
Romain
Avant il était roms18, mais ça c'était avant.
It is impossible to make anything foolproof because fools are so ingenious (Murphy's law).
Hors ligne
Comme l'a souligné babaOroms, il te faut acquérir au moins les bases du fonctionnement des signaux / slots. Ce sera plus simple pour toi pour la suite.
Hors ligne
ok merci je crois que je commence à comprendre c'est vrai que j'ai pas trop lu la doc je vais m'y mettre .
Hors ligne
| Liens interne à QtFR | Les partenaires de QtFR | Liens pour les sites officiels Qt | Liens sur les ressources Qt |
|---|---|---|---|
| Communauté QtFR sur Google+ | Monkey Studio | Télécharger Qt | Notre tutoriel |
| QtFR sur Twitter | ZeGrapher | Site officiel Qt | Documentation Qt |
| IRC box | Qt Blog | Qt Centre | |
| Galeries | Qt Wiki | Qt Apps | |
| Contactez-nous | Qt Quarterly |