سؤال

في البرامج التعليمية ل Qtestlib، هناك مراجع إلى الملفات "testgui.moc" و "testqstring.moc" (يمكن العثور على مثال واحد هنا: http://www.englishbakernetwork.org/coverage/build/qt-copy/examples/qtestlib/tutoral3/.moc/debug-shared/testgui.moc.). وتشمل هذه عدة قطع من المعلومات اللازمة لتكوين الاختبارات. لسوء الحظ، لا يفسر البرامج التعليمية ما هي هذه المعلومات أو كيفية تغييره. على وجه التحديد، أشير إلى هذه الخطوط:

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()), ، لكنني لست متأكدا مما إذا كان ذلك وثيق الصلة بأي شيء آخر غير تنسيق النتيجة.

أود أن أعرف، بشكل عام، ما يجري. يقول التعليق المقدم في الجزء العلوي من الملفات أنه يتعلق ب "رمز كائن التعريف"، وهذا يبدو واضحا بشكل واضح على الأساليب التي يتجاوزها لاحقا.

والأهم من ذلك، ومع ذلك، أريد أن أعرف كيف يمكنني تعديل صفيف Qt_meta_data بحيث يسمح لي بتحديد المزيد من الوظائف و / أو السماح لي بإعادة تسمية الوظائف أعلاه إلى أسماء الطول المختلفة (تبديل أسماء الأسلوب من Toupper يبدو أن Toapple يسبب أي مشاكل، ولكن تغييرها إلى Touppercase أو Toup يتسبب في فشل تطبيق الاختبار في الركض كما هو متوقع).

***************************** تحديث ******************** ************

هناك بالفعل إجابة مقبولة أدناه، لكنني اعتقدت أنني يجب أن أضيف هذا: السبب الوحيد الذي كانت هذه الملفات في البرامج التعليمية على الإطلاق لأن مؤلفي البرنامج التعليمي قرر عدم الحصول على ملفات .h و .cpp لدروسهم. إنهم غير مجديين.

هل كانت مفيدة؟

المحلول

يتم إنشاء الرمز الذي نشرته بواسطة QT مترجم كائن META (MOC) من ملف رأسك. يجب أن لا تكتب / تغيير الملف بنفسك. ما عليك سوى كتابة رأس الفصل الدراسي الخاص بك moc على ذلك (والذي عادة ما يتم التعامل مع نظام البناء الذي تستخدمه، qmake سوف تفعل ذلك بشكل افتراضي).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top