Pergunta

Nos tutoriais do Qtestlib, há referências aos arquivos "testgui.moc" e "testqstring.moc" (um exemplo pode ser encontrado aqui: http://www.englishbreakfastnetwork.org/coverage/build/qt-copy/examples/qtestlib/tutorial3/.moc/debug-shared/testgui.moc). Isso inclui várias informações necessárias para configurar os testes. Infelizmente, os tutoriais não explicam o que é essas informações ou como alterá -las. Especificamente, estou me referindo a essas linhas:

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

Agora, com base no meu entendimento do QT, a variável qt_meta_stringdata_testqstring é a referência de classe com os nomes dos métodos anexados - algo que pode ser feito através de algo METHOD(toUpper()), mas não tenho certeza se e como isso é relevante para outra coisa que não seja formatação de resultados.

Eu gostaria de saber, em geral, o que está acontecendo. O comentário fornecido na parte superior dos arquivos diz que tem a ver com "código de meta objeto", e isso parece óbvio com base nos métodos que posteriormente substitui.

Mais importante, no entanto, quero saber como posso modificar essa matriz qt_meta_data, para que isso me permita chamar mais funções e/ou me permitir renomear as funções acima para nomes de diferentes comprimentos (alternar os nomes de métodos de toupper ToApple parece não causar problemas, mas alterá -los para touppercase ou Toup causa o aplicativo de teste não funcionar conforme o esperado).

***************************** ATUALIZAR ******************** ************

Já existe uma resposta aceita abaixo, mas pensei em acrescentar isso: a única razão pela qual esses arquivos estavam nos tutoriais foi porque os autores do tutorial decidiram não ter arquivos .h e .cpp para suas classes. Eles são inúteis.

Foi útil?

Solução

O código que você postou é gerado por QT's Compilador de meta objeto (MOC) do seu arquivo de cabeçalho. Você não deve escrever/alterar o arquivo sozinho. Basta escrever o cabeçalho da sua classe e correr moc nele (que geralmente é tratado pelo sistema de construção que você usa, qmake fará isso por padrão).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top