Pour écrire un nouveau QObject, on fait ceci:
class MaClasseAMoi : public QObject
{
Q_OBJECT
public:
MaClasseAMoi() : QObject()
{
}
virtual ~MaClasseAMoi()
{
}
}
La macro Q_OBJECT, on s'en fout, c'est juste un placeholder pour des methodes que Qt va ajouter.
Par contre le fait de devoir hériter de QObject peut être ennuyeux parfois: si tu dois hériter d'une classe de base d'un framework que tu utilise et que tu aimerai en faire un QObject aussi => tu es obligé de faire de l'héritage multiple, c'est pas terrible et surtout QObject doit être la première classe de base, dans la déclaration d'héritage sinon, ça marche pas (je sais pas si c'est toujours le cas).
Après pour l'intrusivité des macros Qt, je trouve pas ça gènant non plus, c'est comme les annotation en Java ou Python et comme dit plus haut: les information sont dans le contexte où elles doivent être: dans la declaration de la classe et pas éparpillées dans d'autres endroits du code.
Bon, j'ai pas une vision très objective : j'ai toujours considéré que le C++/Qt était un langage différent du C++.
[^] # Re: Comparaisons
Posté par alberthier (site web personnel) . En réponse au journal CAMP 0.7.0 - Bibliothèque de réflexion C++ sous LGPL. Évalué à 2.
class MaClasseAMoi : public QObject
{
Q_OBJECT
public:
MaClasseAMoi() : QObject()
{
}
virtual ~MaClasseAMoi()
{
}
}
La macro Q_OBJECT, on s'en fout, c'est juste un placeholder pour des methodes que Qt va ajouter.
Par contre le fait de devoir hériter de QObject peut être ennuyeux parfois: si tu dois hériter d'une classe de base d'un framework que tu utilise et que tu aimerai en faire un QObject aussi => tu es obligé de faire de l'héritage multiple, c'est pas terrible et surtout QObject doit être la première classe de base, dans la déclaration d'héritage sinon, ça marche pas (je sais pas si c'est toujours le cas).
Après pour l'intrusivité des macros Qt, je trouve pas ça gènant non plus, c'est comme les annotation en Java ou Python et comme dit plus haut: les information sont dans le contexte où elles doivent être: dans la declaration de la classe et pas éparpillées dans d'autres endroits du code.
Bon, j'ai pas une vision très objective : j'ai toujours considéré que le C++/Qt était un langage différent du C++.