begin process at 2012 02 11 18:29:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Archi-débutant en QT : Question bête...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Archi-débutant en QT : Question bête...

mercredi 17 mars 2004 à 22:10:30 | Archi-débutant en QT : Question bête...

nostromo2022


Je débute en C++ et QT, j'essaie d'apprendre les 2 même si ce n'est pas tellement conseillé.

Voilà un ptit bout de code :

connect( test, SIGNAL(clicked()), lcd, SLOT(display()) );

test est un pushbutton.
lcd est un lcdnumber.

J'aimerais que sur le click du bouton, le lcd affiche un nombre de mon choix disons le 22 par exemple. Comment faire ?
J'ai essayé ça :

connect( test, SIGNAL(clicked()), lcd, SLOT(display(22)) );

et ça :

int tt=22;
connect( test, SIGNAL(clicked()), lcd, SLOT(display(tt)) );

Mais ça ne marche pas. Soyez indulgeant avec le novice ke je suis. Par avance merci.
jeudi 18 mars 2004 à 10:43:38 | Re : Archi-débutant en QT : Question bête...

D1m3x

connect ( &test, SIGNAL( clicked( ) ), lcd, SLOT( display( tt ) ) );

devrait marcher car connect( ) demande un un pointeur vers un objet QObject, donc tu lui renvoi une adresse de type QPushButton puisque toutes les classes ou presque hérite de QObject, normalement tu devrais même obtenir une erreur si tu ne le fais pas! :)

Ciao ;) bonne prog ;)

[DmX]
jeudi 18 mars 2004 à 11:35:59 | Re : Archi-débutant en QT : Question bête...

nostromo2022

Merci pour ta réponse, mais je n'ai pas été assez précis désolé, en
fait je suis le tutorial de trolltech, voici le code de l'exemple :


#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
#include <qfont.h>

#include <qvbox.h>

class MyWidget : public QVBox
{
public:
MyWidget( QWidget *parent=0, const char *name=0 );
};


MyWidget::MyWidget( QWidget *parent, const char *name )
: QVBox( parent, name )
{
QPushButton *quit = new QPushButton( "Quit", this, "quit" );
quit->setFont( QFont( "Times", 18, QFont::Bold ) );

connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );

QLCDNumber *lcd = new QLCDNumber( 2, this, "lcd" );

QSlider * slider = new QSlider( Horizontal, this, "slider" );
slider->setRange( 0, 99 );
slider->setValue( 0 );

connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );
}

int main( int argc, char **argv )
{
QApplication a( argc, argv );

MyWidget w;
a.setMainWidget( &w );
w.show();
return a.exec();
}


Je veux simplement ajouter un bouton qui affiche le nombre 22
sur le LCD. Voilà, j'espère que tu pourras m'aider, puis si tu peux m'expliker pourkoi dans le code présence je n'ai pas besoin de passer une adresse d'un QObject : je suis preneur lol
jeudi 18 mars 2004 à 14:07:07 | Re : Archi-débutant en QT : Question bête...

D1m3x

OH, je viens de voir que je me suis trompé, les slots ne prennent pas d'argument, quand tu les connect() tu ne peux pas en mettre dans la fonction! alors tu peux par exemple te créer un slot à toi, dans la class MyWidget par exemple, et ce slot tu lappelle: void afficher( ); ensuite tu déclare le QLCDNumber dans la class également et non plus dans le constructeur et puis tu procèdes de cette façon:


MyWidget::afficher( )
{
lcd->display( 22 );
}


et dans le constructeur tu change la ligne:


connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );


par


connect( LeBouton, SIGNAL( clicked( ) ), this, SLOT( afficher( ) );


'this' est un pointeur vers la class dans laquelle tu travailles.. (ici c'est un pointeur vers MyWidget) il est très utile vu qu'il permet d'accéder à tous les membres de ta class :)

Bonne prog :)



[DmX]
jeudi 18 mars 2004 à 14:07:27 | Re : Archi-débutant en QT : Question bête...

D1m3x

OH, je viens de voir que je me suis trompé, les slots ne prennent pas d'argument, quand tu les connect() tu ne peux pas en mettre dans la fonction! alors tu peux par exemple te créer un slot à toi, dans la class MyWidget par exemple, et ce slot tu lappelle: void afficher( ); ensuite tu déclare le QLCDNumber dans la class également et non plus dans le constructeur et puis tu procèdes de cette façon:


MyWidget::afficher( )
{
lcd->display( 22 );
}


et dans le constructeur tu change la ligne:


connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );


par


connect( LeBouton, SIGNAL( clicked( ) ), this, SLOT( afficher( ) );


'this' est un pointeur vers la class dans laquelle tu travailles.. (ici c'est un pointeur vers MyWidget) il est très utile vu qu'il permet d'accéder à tous les membres de ta class :)

Bonne prog :)


[DmX]
jeudi 18 mars 2004 à 16:16:09 | Re : Archi-débutant en QT : Question bête...

nostromo2022

Je vais tester tout ça, merci bcp pour ton aide ;p
C'est frustrant de buter sur des trucs "simples" !


Cette discussion est classée dans : test, qt, connect, lcd, signal


Répondre à ce message

Sujets en rapport avec ce message

Programmation QT [ par PunkDude424 ] Salut, je travaille sur un projet en QT et je voudrais savoir comment faire opur connecter un bouton avec une slot.....j'ai le code suivant et le conn OnOk en QT!!! Aidez-moi!!!!! [ par PunkDude424 ] j'ai deux question :la premi;ere:je voudrais savoir comment faire opur connecter un bouton avec une slot.....j'ai le code suivant et le connect me ret QT liste des signaux (SIGNAL) possibles ? [ par RV2931 ] Bonjour,je me suis mis au C++/QT avec code::blocks, et ça me paraît prometteur, ça a plutôt intérêt, parce que j'ai un gros projet qui arrive et j'ai Qt et Visual Studio [ par lektrosonic ] Bonsoir, Quelqun utilise Visual Studio avec l'integration de Qt dans VS ? Si oui, pourquoi, quand je creer un Slot a moi, appelle la macro QOBJECT, et Qt QWidget connect [ par victor110 ] Bonjour, Je travaille avec Qt en C++ et j'aimerai savoir comment passer la méthode [i]move()[/i] d'une QWidget en SIGNAL dans un [i]QObject::connect[/ Qt, lien entre un pushButton et un Qlabel [ par JBG87 ] Bonjour,je veux tout simplement faire une application avec Qt qui me permet d'afficher une image quand je clique sur un bouton. Et je n'y arrive pas, C - KeBugCheck, creer un BSOD [ par Vamp2001 ] Bonjour, je cherche a creer un Blue Screen Of Death.J'ai écrit un code très simple :#include int main(){KeBugCheck(0x0);}<h QT-Objet TreeView [ par mystikilla ] Bonjour,J'ai passé deux  jours entre des docs et des forums pour simplement etre un peut perdu.Je souhaite faire un TreeView contenant une arborescenc Exporter une class depuis une DLL et l'utiliser dans un programme quelconque [ par Havy ] DLL contenant la classe (Maths.dll) #define DllExport __declspec (dllexport)class DllExport Test{    private: int nombre;    public: int Carre(in chargement dll c# depuis c++ [ par wislam2007 ] Salut, quand je test sur mon poste l'appel d'une dll c++ qui appel une dll (.tlb) c# ça fonctionne sans probleme, par contre quand je passe a un aut


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,444 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales