Aiuto per capire tutorial Qtest
Domanda
Nel tutorial per QTestLib, ci sono riferimenti ai file "testgui.moc" e "testqstring.moc" (un esempio può essere trovato qui: http://www.englishbreakfastnetwork.org/coverage/build/qt-copy/examples /qtestlib/tutorial3/.moc/debug-shared/testgui.moc ). Questi includono diversi pezzi di informazioni necessarie per configurare le prove. Purtroppo, le esercitazioni non spiegano ciò che questa informazione è o come cambiarlo. In particolare, mi riferisco a queste linee:
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"
};
Ora, in base alla mia comprensione del QT, la variabile qt_meta_stringdata_TestQString è il riferimento di classe con i nomi dei metodi allegate - qualcosa che può essere fatto attraverso qualcosa di linea METHOD(toUpper())
, ma non sono sicuro se e come ciò è rilevante per qualcosa di diverso formattazione risultato.
Mi piacerebbe sapere, in generale, che cosa sta succedendo. Il commento fornito nella parte superiore del file dice che ha a che fare con "codice oggetto Meta", e che sembra molto evidente sulla base dei metodi più tardi sostituzioni.
Ancora più importante, però, vorrei sapere come posso modificare tale matrice qt_meta_data in modo che mi permetterà di chiamare più funzioni e / o mi permette di rinominare le funzioni di cui sopra per i nomi di diversa lunghezza (commutazione il metodo nomi da toupper a toApple sembra causare problemi, ma cambiando loro di toUpperCase o toup cause sia l'applicazione di test a fallire per l'esecuzione come previsto).
***************************** UPDATE ***************** ***************
C'è già una risposta accettato di sotto, ma ho pensato di aggiungere questo: L'unica ragione per cui i file sono stati nelle esercitazioni a tutti è stato perché gli autori del tutorial deciso di non avere i file cpp e .h per le loro classi. Sono altrimenti inutili.
Soluzione
Il codice che hai postato è generato da Qt di meta oggetto compiler (MOC) dal file di intestazione. Si consiglia di non scrivere / modificare il file da soli. Basta scrivere l'intestazione di classe ed eseguire moc
su di esso (che di solito è gestito dal sistema di compilazione si utilizza, qmake
lo farà per impostazione predefinita).