OVH Cloud OVH Cloud

Problème avec la fonction connect()

5 réponses
Avatar
Vincent Derrien
Je suis donc sous Linux avec une librairie QT.
Un de mes fichiers comprend un constructeur où est défini une méthode de
la façon suivante:

Code:
IntVector -> typedef QvalueVector<int>

public slots:
void mamethode (int, IntVector*);

Dans mon code j'ai juste ça sur cette méthode :
connect (news_tree_list, SIGNAL (nodeEntered (int, IntVector*)), this,
SLOT (mamethode(int, IntVector*));


L'appel de la méthode se fait donc par :
mamethode(int , IntVector*)


J'ai besoin d'initialisé les paramètres de cette méthode lorsque
l'instance de classe est créée. La première instance tout se passe bien.
Ensuite je quitte le module et je détruis cette instance de classe.

Lorsque je crée la deuxième instance de classe, mes paramètres n'ont pas
les mêmes valeurs que la première fois.

Ces types doivent désigner implicitement des variables, non?

Je ne connais pas cette façon de déclarer et d'utiliser de telles méthodes.

Ma question est donc comment manipuler les paramètres de ctte méthode
sachant que il n'y a rien comme:
mamethod (int monentier, IntVector monvecteur)


Merci pour vos réponses et j'espère avoir été le plus clair possible.

5 réponses

Avatar
drkm
Vincent Derrien writes:

Code:
IntVector -> typedef QvalueVector<int>

public slots:
void mamethode (int, IntVector*);


C'est du C++, ça ?

--drkm

Avatar
Vincent Derrien
Vincent Derrien writes:


Code:
IntVector -> typedef QvalueVector<int>



public slots:
void mamethode (int, IntVector*);



C'est du C++, ça ?

--drkm


Oui ... en tout cas, c'est dans un morceau de code en C++ et QT d'un
programme sur lequel je me suis basé.


Avatar
drkm
Vincent Derrien writes:


Vincent Derrien writes:

Code:
IntVector -> typedef QvalueVector<int>

public slots:
void mamethode (int, IntVector*);


C'est du C++, ça ?


Oui ...


Et pourtant ...

en tout cas, c'est dans un morceau de code en C++ et QT d'un
programme sur lequel je me suis basé.


Ah (ça me reviens maintenant), je me demande si Qt n'utilise pas un
préprocesseur maison pour gérer des extensions propres. Exact ?

--drkm



Avatar
Gabriel Dos Reis
drkm writes:

| Vincent Derrien writes:
|
|
| >> Vincent Derrien writes:
|
| >>>Code:
| >>>IntVector -> typedef QvalueVector<int>
|
| >>>public slots:
| >>>void mamethode (int, IntVector*);
|
| >> C'est du C++, ça ?
|
| > Oui ...

Non.

|
| Et pourtant ...
|
| > en tout cas, c'est dans un morceau de code en C++ et QT d'un
| > programme sur lequel je me suis basé.
|
| Ah (ça me reviens maintenant), je me demande si Qt n'utilise pas un
| préprocesseur maison pour gérer des extensions propres. Exact ?

Oui. Voir moc.

-- Gaby
Avatar
drkm
Loïc Joly writes:

Pour le problème initial, je pense qu'il s'agit juste d'un problème de
C++ :

Rien n'empêche quand une fonction est déclarée :
void mamethode (int, IntVector*);

De l'implémenter :
void mamethod (int monentier, IntVector *monvecteur) {}


En effet, ça devrait être ce que le PO cherche. J'avoue que je n'ai
pas lu tout l'article attentivement, lorsque j'ai vu les bizareries
MOC.

Sans doute peut-il même remplacer :

SLOT (mamethode(int, IntVector*));

par :

SLOT (mamethode(int monentier, IntVector* monvecteur));

Mais ÀMHA, s'il veut utiliser MOC, ou Zorglub, il devra investir
dans son apprentissage.

--drkm