Dans mon application, j'ai la hiérarchie de classe suivante:Est-il possible de mélanger des classes C++ dérivées de modèles avec Q_OBJECT de Qt?
class Word
{
...
}
template <typename T> class Dictionary
{
...
};
class WordDictionary : public Dictionary<Word>
{
Q_OBJECT
...
}
La classe WordDictionary parse un dictionnaire qui prend beaucoup de temps. J'exécute la fonction d'analyse à partir d'un thread distinct et je veux qu'il soit capable de signaler le thread graphique de temps en temps pour fournir des mises à jour de progression basées sur le numéro de ligne en cours d'analyse. C'est pourquoi je veux que ce soit un Q_OBJECT. J'ai essayé de faire du dictionnaire de classe de base un Q_OBJECT mais j'ai reçu un message indiquant que les templates Q_OBJECT ne sont pas supportés. Lorsque j'ai enlevé la macro, ne laissant que WordDictionary comme Q_OBJECT, je reçois un tas de messages d'erreur de la forme générale:
\ GeneratedFiles \ Release \ moc_dictionary.cpp (44):. Erreur C2039: 'staticMetaObject': est pas membre du « Dictionnaire »
avec
[
T = Mot
]
est-ce que je peux faire pour ma classe WordDictionary dérivée modèle-un Q_OBJECT autre que hardcoding les fonctions de modèle dans côté, produisant beaucoup de code standard?
modifier: Modification de la déclaration de modèle à:
template <typename T> class Dictionary : public QObject
fait la compilation de code. Je ne suis pas sûr si je ne fais pas quelque chose de stupide et si cela fonctionnera correctement, cependant.
[Pourquoi Qt n'utilise-t-il pas de modèles pour les signaux et les emplacements] (http://qt-project.org/doc/qt-4.8/templates.html) –