Pregunta

En los tutoriales para QTestLib, hay referencias a los archivos "testgui.moc" y "testqstring.moc" (un ejemplo se puede encontrar aquí: http://www.englishbreakfastnetwork.org/coverage/build/qt-copy/examples /qtestlib/tutorial3/.moc/debug-shared/testgui.moc ). Estos incluyen varias piezas de información necesarios para configurar las pruebas. Por desgracia, los tutoriales no explican por qué esta información es o cómo cambiarlo. En concreto, me refiero a estas líneas:

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"
};

Ahora, basado en mi entendimiento de QT, la variable qt_meta_stringdata_TestQString es la referencia de clase con los nombres de los métodos adjuntan - algo que podría hacerse a través de la línea METHOD(toUpper()) algo, pero no estoy seguro de si y cómo esto es relevante para otra cosa que el formato de resultado.

Me gustaría saber, en general, lo que está pasando. El comentario proporcionado en la parte superior de los archivos dice que tiene que ver con el "código objeto Meta", y que gran parte parece obvio basado en los métodos más tarde anulaciones.

Más importante, sin embargo, me gustaría saber cómo puedo modificar esa matriz qt_meta_data de manera que permitirá que llame a más funciones y / o me permite cambiar el nombre de las funciones anteriormente a los nombres de diferente longitud (el cambio del método nombres de toUpper a toApple parece causar ningún problema, pero cambiándolos a toUpperCase o toup tanto hace que la aplicación de prueba para que no se ejecute como se esperaba).

***************************** ACTUALIZACIÓN ***************** ***************

Ya existe una respuesta aceptada a continuación, pero pensé que debería añadir lo siguiente: La única razón esos archivos estaban en los tutoriales en absoluto se debía a que los autores de tutoría decidido no tener .hy archivos .cpp para sus clases. Ellos son de otra manera inútil.

¿Fue útil?

Solución

El código que envió es generada por Qt de meta objeto compilador (MOC) desde su archivo de cabecera. No se debe escribir / cambiar el archivo usted mismo. Sólo tiene que escribir el encabezado de clase y ejecutar moc en él (que suele ser manejado por el sistema de construcción que utiliza, qmake lo hará por defecto).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top