Frame simple en qt pour newbie

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 203 fois - Téléchargée 34 fois

Contenu du snippet

Voila un source tout simple pour comprendre comment creer une frame en Qt avec juste un bouton.
je pose ce source car j'ai eu du mal a en trouver et qu'a chaque fois, le source est mal expliquer ou il y a
trop de gadget (toolbar, textlist, ...).... C'est vraiment un exemple super simple qui demontre juste
la derivation de la classe principale et l'ajout dun bouton. Un gestionnaire d'action est egalement inclus.

Source / Exemple :


/***************************************************************************

  • Copyright (C) 2005 by Jean *
  • ionace@latriyade.com *
  • *
                                                                                                                                                      • /
#include <qapplication.h> #include <qpushbutton.h> #include <qmessagebox.h> class bouton : public QPushButton { Q_OBJECT public: bouton(const QString & text, QWidget * parent); ~bouton(); public slots: void message(); }; bouton::bouton(const QString & text, QWidget * parent) : QPushButton(text,parent) { setGeometry(100, 100, 100, 100); } bouton::~bouton() { } void bouton::message() { QMessageBox::information( this, "Application name", "Unable to find the user preferences file.\n" "The factory default will be used instead." ); } /* Nouvelle classe issue de la derivation de QWidget */ class Widget : public QWidget { public: Widget(); //constructeur }; /* Constructeur par default de la classe Widget */ Widget::Widget() : QWidget() { setMinimumSize( 300, 300 ); // Avec ces deux fonctions on empeche l'utilisateur setMaximumSize( 300, 300 ); // de modifier la taille de la frame avec la souris bouton *quit = new bouton( "Quit", this ); // on creer un bouton graphique quit->setFont( QFont( "Times", 18, QFont::Bold ) ); // definition de sa police de caratcere connect( quit, SIGNAL( clicked() ), quit, SLOT( message() ) ); /* gestionnaire d'evenemnt connect( widget_qui_envoi_un_signal, type_du_signal, widget_qui_recoit_le_signal, traitement_a_effectuer) */ } /**********************/ /* Debut du programme */ int main( int argc, char **argv ) { QApplication a( argc, argv ); // on instancie la classe QApplication Widget w; // on instancie la classe Widget w.setGeometry( 0, 0, 800, 600 ); // definition de l'emplacement et de la taille de la frame a.setMainWidget( &w ); // on on enferme le conteneur principale dans l'objet creer a partir de QApplication w.show(); // w doit-etre visible sinon la classe principale sera invisible ( c'est le conteneur ) return a.exec(); // execute la frame } /* fin du programme */ /*******************/

A voir également

Ajouter un commentaire

Commentaires

Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

je t'avoue que je ne connais pas fmodex... je connais vaguement fmod qui est une api proche de directx (enfin il me semble).
Pour ton probleme de compilation, j'avoue encore une fois ma faiblesse en te disant que je n'arrive pas trop a imaginer ton probleme, peut etre en etant un peu plus precis avec des exemples concrets...

@++
Messages postés
21
Date d'inscription
dimanche 19 novembre 2000
Statut
Membre
Dernière intervention
9 mars 2007

Salut, jessaie d'utilier la toute derniere version de fmodex ecris en c++ et m'aperçois malheuresement que les classes de cette version ne peuvent pas se compiler avec devc++sinon les fonctions ce compilent bien mais celle ci sont en c . C'est d'autan plus chiant que j'utilise les classes de Qt4 pour faire mes prog qui eux se compile qu'avec mingw (donc devc++).
Jsuis un debutant en prog et jme suis dis si il été possible d'utiliser les fonctions de fmodex ecritent en c pour ensuite les implanter dans les classes de Qt4. ainsi j'ajouterais des fonctions a Qt4 permettant de lire des mp3 et non que des wav.
jpense pas etre le seul a penser ça, mais bon jtrouve difficilement de topic sur ce sujet. Si quelqun a une idée ce serais cool de le faire partager a tous.
merci
Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

Pour la soluce :
pour compiler sans problemes, il faut mettre chaque declaration de classe dans un fichier .h (separe de preference) et chaque fonction membre dans un fichier .cpp portant le meme nom du fichier .h.
En fait le probleme c'est que KDevelop ne pouvait pas creer de fichier .moc avant de linker c'est pour sa que sa bader....... je vais quand meme remettre un zip en ligne avec tous les fichiers du projets.......
Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

Heu.. j'ai mis a jour le source. J'ai rajouter une classe pour le bouton (bouton) pour pouvoir definir un fonction appropriee pour le traitement du signal a effectuer mais j'ai eu un soucis : KDevelop a compile sans problemes mais c'est l'editeur de liens qui me renvoi une erreur -> "sortie état 2".... Je ne sais absolument pas d'ou le probleme pourrait venir donc si quelqu'un connait la solution... qu'il me fasse signe !!!
Merci d'avance ;-)
Messages postés
449
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
5 mars 2009

Je voulais egalement qu'on m'explique si possible comment faire pour creer ma propre action dans connect().
Le code pourrait etre ceci :
Au lieu de
connect( quit, SIGNAL( clicked() ), qApp, SLOT( quit() ) );
Je voudrais utiliser la fonction membre ( Widget::message() )
connect( quit, SIGNAL( clicked() ), this, SLOT( message() );
Je voudrais qu'une messagebox s'ouvre mais quand je compile il ne se passe rien...
Je clique mais rien ne s'affiche... si quelqu'un peut m'aider a resoiudre ce petit probleme, sa serait cool de sa part. Merci ;-)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.