2009-12-12 6 views
2

는, 파일 "testgui.moc"와 "testqstring.moc"에 대한 참조가 있습니다 (하나의 예는 여기에서 찾을 수 있습니다 : http://www.englishbreakfastnetwork.org/coverage/build/qt-copy/examples/qtestlib/tutorial3/.moc/debug-shared/testgui.moc). 여기에는 테스트를 구성하는 데 필요한 몇 가지 정보가 포함됩니다. 안타깝게도 튜토리얼에서는이 정보가 무엇인지 또는 어떻게 변경하는지 설명하지 않습니다. 특히, 나는이 선을 말하는 겁니다 :도움말 이해 QTEST 자습서 QTestLib에 대한 튜토리얼에서

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

는 QT에 대한 이해를 바탕으로 qt_meta_stringdata_TestQString 변수가 추가 된 방법의 이름으로 클래스 참조입니다 - 뭔가 라인을 통해 할 수있는 일을 METHOD(toUpper()),하지만 이것이 결과 형식화 이외의 다른 용도와 관련이 있는지 여부와 확실하지 않습니다.

내가 알고 싶습니다

, 일반적으로 어떤 일이 벌어지고. 파일 맨 위에 제공된 주석은 "Meta Object Code"와 관련이 있다고 말합니다.이 내용은 나중에 재정의하는 방법에 따라 분명히 드러납니다.

그러나 더 중요한 것은 qt_meta_data 배열을 수정하여 더 많은 함수를 호출하고 다른 길이의 이름으로 위 함수를 다시 사용할 수 있도록하는 방법을 알고 싶습니다 (toUpper에서 toApple 로의 메서드 이름은 문제가되지 않지만 toUppercase 또는 toUp로 변경하면 테스트 응용 프로그램이 예상대로 실행되지 않습니다.

***************************** UPDATE **************** ***************

아래에 이미 답변이 있지만 이미 추가해야한다고 생각합니다. 해당 파일이 자습서에있는 유일한 이유는 자습서 작성자는 .h 및 .cpp 파일을 해당 클래스에 사용하지 않기로 결정했습니다. 그들은 다르게 소용 없다.

답변

4

게시 한 코드는 헤더 파일에서 Qt의 meta object compiler (moc)에 의해 생성됩니다. 파일을 직접 쓰거나 변경해서는 안됩니다. 클래스 헤더를 작성하고 moc을 실행하면됩니다 (일반적으로 사용하는 빌드 시스템에 의해 처리되며, 기본값은 qmake입니다).

+0

감사합니다. 다시 한번 QT는 내가 기대했던 것보다 훨씬 간단합니다. – cwallenpoole