Ajude a entender os tutoriais do qtest
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.
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).