programmation QT : problème de débutant

programmation QT : problème de débutant - C++ - Programmation

Marsh Posté le 01-03-2004 à 11:15:48    

bonjour à tous
 
j'essaie d'apprendre à programmer avec le widget QT, sous linux. j'ai des bases de programmations objet (en java) et je connais le C, donc j'apprend en même temps la programmation objet en C++.
 
voici le premier exemple que je tente de faire tourner, et je ne comprend pas pourquoi ça compile pas :
 

Code :
  1. #include <qapplication.h>
  2. int main (int argc, char** argv)
  3. {
  4.   QApplication app (argc, argv);
  5.   QWidget *window = new QWidget();
  6.   app.setMainWidget(window);
  7.   window -> show();
  8.   return app.exec();
  9. }


 
je tente de compiler avec gcc, et j'obtiens le message suivant :

exemple01.cpp:1:26: qapplication.h: No such file or directory
exemple01.cpp: In function `int main(int, char**)':
exemple01.cpp:5: error: `QApplication' undeclared (first use this function)
exemple01.cpp:5: error: (Each undeclared identifier is reported only once for each function it appears in.)
exemple01.cpp:5: error: syntax error before `(' token
exemple01.cpp:7: error: `QWidget' undeclared (first use this function)
exemple01.cpp:7: error: `window' undeclared (first use this function)
exemple01.cpp:7: error: syntax error before `(' token
exemple01.cpp:9: error: `app' undeclared (first use this function)

pourtant j'ai installé les paquages nécessaires (enfin je croyais, mais manifestement non). je suis sous mandrake 9.2, quelqu'un pourrait m'aider svp ?
 
merci beaucoup

Reply

Marsh Posté le 01-03-2004 à 11:15:48   

Reply

Marsh Posté le 01-03-2004 à 11:22:08    

faudrait ptet dire au compilateur ou trouver ses petits ?
 
genre une directive -I/mon/chemin/vers/les/includes/qt

Reply

Marsh Posté le 01-03-2004 à 11:26:43    

ça me semble être une bonne idée. quelqu'un sait où ça s'installe par défaut ?


Message édité par psychotek le 01-03-2004 à 11:26:58
Reply

Marsh Posté le 01-03-2004 à 11:28:09    

non.
 
essaye find ou locate [:spamafote]

Reply

Marsh Posté le 01-03-2004 à 11:32:12    

tu veux commencer par
 
1) installer tout ce qu'il faut
2) utiliser la façon Qt de compiler, càd, prépro et compilateur
3) et lire les milliars de tutoriels sur le ouaib :o

Reply

Marsh Posté le 01-03-2004 à 11:37:00    

bon je l'ai trouvé là :
/usr/lib/qt3  
 
mais -l ne semble pas être la bonne option, que pensez vous de -B ?
 
je fais donc gcc -B /usr/lib/qt3 exemple.cpp  et j'ai un gros message d'erreur :
 
/home/psy/tmp/cc4bmlg6.o(.text+0x20): In function `main':
: undefined reference to `QApplication::QApplication[in-charge](int&, char**)'
/home/psy/tmp/cc4bmlg6.o(.text+0x2d): In function `main':
: undefined reference to `operator new(unsigned)'
/home/psy/tmp/cc4bmlg6.o(.text+0x45): In function `main':
: undefined reference to `QWidget::QWidget[in-charge](QWidget*, char const*, unsigned)'
/home/psy/tmp/cc4bmlg6.o(.text+0x6a): In function `main':
: undefined reference to `operator delete(void*)'
/home/psy/tmp/cc4bmlg6.o(.text+0x84): In function `main':
: undefined reference to `QApplication::setMainWidget(QWidget*)'
/home/psy/tmp/cc4bmlg6.o(.text+0xaa): In function `main':
: undefined reference to `QApplication::exec()'
/home/psy/tmp/cc4bmlg6.o(.text+0xbb): In function `main':
: undefined reference to `QApplication::~QApplication [in-charge]()'
/home/psy/tmp/cc4bmlg6.o(.text+0xd5): In function `main':
: undefined reference to `QApplication::~QApplication [in-charge]()'
/home/psy/tmp/cc4bmlg6.o(.gnu.linkonce.r._ZTV6QGList+0xc): undefined reference to `QGList::clear()'
/home/psy/tmp/cc4bmlg6.o(.gnu.linkonce.r._ZTV6QGList+0x10): undefined reference to `QGList::~QGList [in-charge]()'
/home/psy/tmp/cc4bmlg6.o(.gnu.linkonce.r._ZTV6QGList+0x14): undefined reference to `QGList::~QGList [in-charge deleting]()'
/home/psy/tmp/cc4bmlg6.o(.gnu.linkonce.r._ZTV6QGList+0x18): undefined reference to `QPtrCollection::newItem(void*)'
/home/psy/tmp/cc4bmlg6.o(.gnu.linkonce.r._ZTV6QGList+0x1c): undefined reference to `__cxa_pure_virtual'
/home/psy/tmp/cc4bmlg6.o(.gnu.linkonce.r._ZTV6QGList+0x20): undefined reference to `QGList::compareItems(void*, void*)'
/home/psy/tmp/cc4bmlg6.o(.gnu.linkonce.r._ZTV6QGList+0x24): undefined reference to `QGList::read(QDataStream&, void*& )'
/home/psy/tmp/cc4bmlg6.o(.gnu.linkonce.r._ZTV6QGList+0x28): undefined reference to `QGList::write(QDataStream&, void*) const'
/home/psy/tmp/cc4bmlg6.o(.gnu.linkonce.r._ZTI6QGList+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/home/psy/tmp/cc4bmlg6.o(.gnu.linkonce.r._ZTI6QGList+0x8): undefined reference to `typeinfo for QPtrCollection'
/home/psy/tmp/cc4bmlg6.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
 
 
quelqu'un pourrait m'expliquer ?
 
Taz je n'ai pas compris ce que tu veux dire. il semble que j'ai déjà installé ce qu'il faut. après je veux juste pouvoir compiler  sans problème mes exemples. quant aux tutos sur le web, j'en suis un, on verra ce que ça donne.

Reply

Marsh Posté le 01-03-2004 à 11:38:24    

1. c'est -I, pas -l ni -1
2. tu confonds lib & header

Reply

Marsh Posté le 01-03-2004 à 11:41:39    

ben tu la section "comment compiler" et c'est tout. en grois faut laisser qmake faire tout ce qu'il faut :o

Reply

Marsh Posté le 01-03-2004 à 11:43:40    

1- ok j'avais pas calculé
2- effectivement, peux tu m'expliquer la différence ?
 
parce que dans l'etat je n'avance pas

Reply

Marsh Posté le 01-03-2004 à 11:46:18    

qmake, je ne sais pas ce que c'est. et sur mon tuto je n'ai pas de section "comment compiler" sinon je ne serais certainement pas là à galérer sur cette compilation. bon je vais chercher un tuto plus explicite à ce sujet.

Reply

Marsh Posté le 01-03-2004 à 11:46:18   

Reply

Marsh Posté le 01-03-2004 à 11:49:38    

tu vas sur le site de Qt. et soit un peu dégourdi. je connais rien à Qt, seulement quand j'ai voulu jouer, je suis tomber directement dessus et la compilation ne m'a posé aucun problème

Reply

Marsh Posté le 01-03-2004 à 11:59:39    

Taz je te prierai d'être moins désagréable, ça ne sert à rien de répondre si tu ne veux pas aider. j'ai déjà vu sur d'autres posts que tu es systématiquement chiant quand tu réponds à quelqu'un, tu voudrais pas faire un effort ? essaye de répondre quelque chose de constructif et relis tes posts après les avoir écrit car une fois sur deux c'est incompréhensible.
 
d'autre part si la compilation ne t'a posé aucun problème, je ne vois pas pourquoi tu ne m'aides pas directement, pour pouvoir clore ce topic et le laisser aux gens qui en auront besoin après moi.


Message édité par psychotek le 01-03-2004 à 12:01:43
Reply

Marsh Posté le 01-03-2004 à 12:04:36    

pourquoi ? parce qu'en allant sur le site de Qt, section documentation http://doc.trolltech.com/3.3/index.html tu clique sur tutorial #1 et là en première page il t'explique tout :o
 
alors je trouve que c'est un peu du foutage de gueule de poser des questions comme ça

Reply

Marsh Posté le 01-03-2004 à 12:12:57    

et d'y répondre comme ça, c'est pas du foutage de gueule peut être ? si mes questions ne t'intéressent pas, tu es libre de ne pas y répondre. je t'y engage désormais, puisqu'il semble que tu te sentes obligé de devenir vulgaire, et ce toujours sans aider les autres. en d'autres termes : soit tu réponds de manière constructive et agréable, soit tu laches ce topic. mais si tu décides de répondre, c'est que tu as accepté ma question comme vallant la peine que tu y passes du temps. et si elle vaut cette peine, c'est que ce n'est pas du foutage de gueule. cqfd.
 
ou alors tu t'es dit : "tiens cette question je la trouve con et inintéressante mais je vais y répondre quand même, juste histoire de faire chier le monde, et si possible sans rien y apporter de valable". et dans ce cas tu es vraiment crétin et ça ne vaut pas vraiment la peine que j'en écrive plus à ton sujet.

Reply

Marsh Posté le 01-03-2004 à 12:15:28    

je dis juste que tu pose une question auquelle la documentation réponds en chapitre paragraphe 1 ... je sais pas ce que ça veut dire pour toit « débuter » mais si tu commençais déjà par lire le début ça serait pas mal

Reply

Marsh Posté le 01-03-2004 à 12:37:45    

après lecture d'un article fort intéssant (http://www.linuxfrench.net/article.php?id_article=980) , ainsi que les articles précédents et les suivants, je suis enfin parvenu à quelque chose.
 
d'une part il m'a fallu un certain temps pour calculer que qmake était installé avec qt, et qu'il fallait juste aller le chercher (dans /usr/lib/qt3/bin). j'ai finalement créé un lien symbolique pour pouvoir y accéder de partout.
 
une fois ceci fait, il faut créer un fichier .pro comme expliqué ici : http://doc.trolltech.com/3.3/qmake-manual-3.html et suivre les instructions, ça marche effectivement très bien (il ne me manquait que qmake finalement).
 
EDIT : ah oui je tiens finalement à te remercier Taz, j'étais venu chercher de l'aide pour gagner du temps, et grâce à toi j'en ai perdu beaucoup. tu aurais pu me dire, dès le début "il faut que tu utilises qmake comme expliqué sur le site de trolltech" et la question aurait été réglée. au lieu de quoi tu as préféré t'exprimer par énigmes (puisque tes réponses étaient franchement obscures) puis m'insulter. une introspection en vue ? enfin seulement si tu considère que ta réaction était anormale. si tu trouves ça naturel, alors tout va bien ;-)


Message édité par psychotek le 01-03-2004 à 12:41:37
Reply

Marsh Posté le 02-03-2004 à 12:12:58    

bonjour psychotec, je voudrais stp savoir comment tu as fait dans le détail pour regler ton prob des includes, quand il ne trouvais pas le qapplication.h, parce que j'ai a peu prés le même prob, et comme je débute j'aimerais beaucoup que tu m'aide
merçi

Reply

Marsh Posté le 02-03-2004 à 12:14:01    

narry a écrit :

bonjour psychotec, je voudrais stp savoir comment tu as fait dans le détail pour regler ton prob des includes, quand il ne trouvais pas le qapplication.h, parce que j'ai a peu prés le même prob, et comme je débute j'aimerais beaucoup que tu m'aide
merçi


Je viens de te dire, sur ton topic sur partmanager.h, qu'il y a de fortes chances que tu n'aies pas installé QT sur ton poste !


Message édité par Harkonnen le 02-03-2004 à 12:14:43
Reply

Marsh Posté le 02-06-2004 à 13:37:47    

Bijour
 
trs cool votre tchatche mais ça n'aboutie à rien :non:
 
Bref la seule chose ki m'a aidé c ke g t pas le seul à soufrir avec ce pblm
 
Bon mais kom g reuissi à resoudre mon pblm je v expliker mon histoire
 
Bref le qmake n a rien avoir avec ça, car g creer l'exemple du tetoriel ( le truc metric) puis g mis le qmake juska là tout va bien le makfile é créeé .
apres lors du make ou nmake j'avé ceci:
 
O début c t le fichier uic ki n'existé pas ( pour ça fastoch g fé un lien de /usr/local/qt/bin/uic -> /bin/uic )
 
mais tjrs pas de solution car il a pas trouvé les headers.
 
...
g++ -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/local/qt/mkspecs/default -I. -I/include -I.ui/ -I. -I.moc/ -o .obj/main.o main.cpp
main.cpp:3:26: qapplication.h: No such file or directory
In file included from main.cpp:4:
.ui/multiclipform.h:13:22: qvariant.h: No such file or directory
.ui/multiclipform.h:14:21: qdialog.h: No such file or directory
.ui/multiclipform.h:15:24: qclipboard.h: No such file or directory
In file included from main.cpp:4:
.ui/multiclipform.h:30: parse error before `{'
.ui/multiclipform.h:35: destructors must be member functions
.ui/multiclipform.h:49: parse error before `public'
.ui/multiclipform.h:51: virtual outside class declaration
.ui/multiclipform.h:52: virtual outside class declaration
 
 
 
 
pourtant g bien mis les lignes suivantes dans mon fichier  .bash_profile
 
QTDIR=/usr/local/qt
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
 
 
Bref le hic c kil fo taper cette commande ( pour moi ça a marché :bounce:
 
 
export QTDIR=/usr/local/qt/
 
Voila


Message édité par zkara le 02-06-2004 à 13:57:05

---------------
:.:::..::[[Php Files Xplorer]]:..:..:::.:..:philex.sf.net::.:.:..::.:..:.:..:...::::::::::
Reply

Marsh Posté le 02-06-2004 à 14:07:06    

Citation :

je fais donc gcc -B /usr/lib/qt3 exemple.cpp  et j'ai un gros message d'erreur


Au passage, utilise g++ et non gcc.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 02-06-2004 à 16:38:12    

vous codez tous sous linux ou quoi???

Reply

Marsh Posté le 03-06-2004 à 11:10:31    

BIN Wéééééééééééééééé  QT c pour linux sinon pkoi j'aurai pris 7 lib si g t sous win ??


---------------
:.:::..::[[Php Files Xplorer]]:..:..:::.:..:philex.sf.net::.:.:..::.:..:.:..:...::::::::::
Reply

Marsh Posté le 03-06-2004 à 11:34:55    

pourquoi vous n'utilisez pas wxwidget? c'est une question de preference?


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 03-06-2004 à 11:41:24    

Citation :

QT c pour linux


http://doc.trolltech.com/3.3/aboutqt.html

Citation :

pourquoi vous n'utilisez pas wxwidget?


Moins d'outils, moins évoluée, moins de doc, moins évidente à utiliser...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 03-06-2004 à 11:55:57    

Bon HelloWorld je reformule ma réponse
 
si g opté pour QT c pour developé mes app sous linux, et si g t sous win j'aurai choisit cpp builder or delphi (ai je pas raison ??)
 
et pour le wxwidget g pas essayé , j'hésité entre le gtk (glade) et le qt , enfin de compte je crois ke g choisit le CUL-T :p désolé pour terme mais en ce moment me fé chier :)))))))


---------------
:.:::..::[[Php Files Xplorer]]:..:..:::.:..:philex.sf.net::.:.:..::.:..:.:..:...::::::::::
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed