Question

Dans les tutoriels QTestLib, il y a des références aux fichiers « testgui.moc » et « testqstring.moc » (un exemple peut être trouvé ici: http://www.englishbreakfastnetwork.org/coverage/build/qt-copy/examples /qtestlib/tutorial3/.moc/debug-shared/testgui.moc ). Ceux-ci comprennent plusieurs éléments d'information nécessaires pour configurer les tests. Malheureusement, les tutoriels n'expliquent pas ce que cette information est ou comment le changer. Plus précisément, je fais référence à ces lignes:

static const uint qt_meta_data_TestQString[] = {

 // content:
       2,       // revision
       0,       // classname
       0,    0, // classinfo
       2,   12, // methods
       0,    0, // properties
       0,    0, // enums/sets
       0,    0, // constructors

 // slots: signature, parameters, type, tag, flags
      13,   12,   12,   12, 0x08,
      28,   12,   12,   12, 0x08,

       0        // eod
};

static const char qt_meta_stringdata_TestQString[] = {
    "TestQString\0\0toUpper_data()\0toUpper()\0"
};

Maintenant, en fonction de ma compréhension de l'intervalle QT, la variable qt_meta_stringdata_TestQString est la référence de classe avec les noms des méthodes en annexe - quelque chose qui pourrait être fait par la ligne de quelque chose METHOD(toUpper()), mais je ne sais pas si et comment cela est pertinent pour autre chose que la mise en forme des résultats.

Je voudrais savoir, en général, ce qui se passe. Le commentaire fourni en haut des fichiers dit qu'il doit faire avec « code objet Meta », et que beaucoup semble évident sur la base des méthodes plus tard overrides.

Plus important encore, cependant, je veux savoir comment je peux modifier ce tableau qt_meta_data afin qu'il me permettra d'appeler plus de fonctions et / ou permettez-moi de rebaptiser les fonctions ci-dessus pour les noms de différentes longueurs (commutation de la méthode les noms de toUpper à toApple semble causer aucun problème, mais de les modifier à toUpperCase ou toup cause à la fois l'application de test à l'échec de fonctionner comme prévu).

***************************** MISE À JOUR ***************** ***************

Il existe déjà une réponse ci-dessous acceptée, mais je pensais que je devrais ajouter ceci: La seule raison pour laquelle ces fichiers étaient dans les tutoriels du tout était parce que les auteurs tutoriel décidé de ne pas avoir .h et les fichiers .cpp pour leurs classes. Ils sont par ailleurs inutiles.

Était-ce utile?

La solution

Le code affiché est généré par Qt de méta compilateur objet (moc) à partir de votre fichier d'en-tête. Vous ne devriez pas écrire / modifier le fichier vous-même. Il suffit d'écrire votre tête de classe et exécuter moc sur (ce qui est généralement gérée par le système de construction que vous utilisez, qmake le fera par défaut).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top