2009-12-12 3 views
2

Dans les tutoriels de QTestLib, il existe 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 incluent plusieurs informations nécessaires pour configurer les tests. Malheureusement, les tutoriels n'expliquent pas ce qu'est cette information ou comment la changer. Plus précisément, je fais référence à ces lignes:Aide à la compréhension des tutoriels QTest

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, basée sur 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 annexées - ce qui pourrait être fait par la ligne de quelque chose METHOD(toUpper()), mais je ne suis pas sûr si et comment cela est pertinent pour autre chose que le formatage des résultats.

Je voudrais savoir, en général, ce qui se passe. Le commentaire fourni en haut des fichiers indique qu'il s'agit de "Meta object code", et cela semble évident sur la base des méthodes qu'il écrase par la suite. 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 renommer les fonctions ci-dessus à des noms de longueur différente (commutation de la Les noms de méthodes de toUpper à toApple semblent ne causer aucun problème, mais les changer en toUppercase ou toUp both provoque l'échec de l'exécution de l'application de test comme prévu).

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

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

Répondre

4

Le code affiché est généré par Qt de meta object compiler (moc) à partir de votre fichier d'en-tête. Vous ne devriez pas écrire/changer 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).

+0

Merci. Encore une fois, QT est beaucoup plus simple que ce à quoi je m'attendais. – cwallenpoole

Questions connexes