143 votes

Qt question: Que fait la macro q_object faire? Pourquoi faire tout un objet Qt besoin de cette macro?

J'ai juste commencé à l'aide de Qt et remarqué que tous les exemples de définitions de classe ont la macro Q_OBJECT à la première ligne. Quel est le but de cette macro préprocesseur?

139voto

Stu Mackellar Points 8605

À partir de la documentation de Qt:

Le Méta-Objet Compilateur, moc, est l' programme qui gère de Qt C++ extensions.

L'outil moc lit un fichier d'en-tête C++. S'il en trouve une ou plusieurs classes des déclarations qui contient la macro q_object macro, il produit un fichier source C++ contenant les méta-code objet ces classes. Entre autres choses, méta-objet du code est nécessaire pour la les signaux et les slots mécanisme, l' run-time type information, et la dynamique du système de la propriété.

20voto

Martin Beckett Points 60406

Il indique simplement le pré-compilateur que cette classe a des éléments d'interface et doit être exécuté par le biais de la "moc", vous n'aurez qu'à ajouter ce pour les classes qui utilisent le signal/slot mécanisme.
Mais il sera tranquillement ignoré dans les autres catégories, il ajoute juste le temps de construction.

8voto

aditya Points 31

La MOC (compilateur de méta-objet) convertit la macro q_object inclus fichiers d'en-tête dans le C++ équivalent de code source. Essentiellement, il contrôle le signal-slot mécanisme, et le rend compréhensible pour le compilateur C++

0voto

Andres Points 11

La macro q_object doit apparaître dans la section privée de la définition d'une classe qui déclare ses propres signaux et slots ou qui utilise d'autres services fournis par Qt meta-object system.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X