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.

È stato utile?

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top