c++ - ماذا يفعل ماكرو Q_OBJECT؟ لماذا تحتاج كل كائنات كيو تي إلى هذا الماكرو؟




qt macros (4)

1 من وثائق Qt لنظام Meta-Object

أداة moc يقرأ ملف مصدر C ++. إذا عثر على واحد أو أكثر من تعريفات فئة تحتوي على الماكرو Q_OBJECT ، فإنه ينتج عن ملف مصدر C ++ آخر يحتوي على رمز كائن meta لكل من هذه الفئات. هذا الملف المصدر الذي تم إنشاؤه هو # include'd في ملف المصدر الخاص بالفئة ، أو عادةً ما يتم ترجمته وربطه بتطبيق الفصل.

2 من وثائق كيو تي لـ Q_OBJECT

يجب أن يظهر الماكرو Q_OBJECT في القسم الخاص من تعريف الفئة الذي يحدد إشاراته وفتحاته الخاصة أو التي تستخدم خدمات أخرى يوفرها نظام كائن meta في كيو تي.

3 من وثائق كيو تي من moc

أداة moc يقرأ ملف رأس C ++. إذا عثر على واحد أو أكثر من تعريفات فئة تحتوي على الماكرو Q_OBJECT ، فإنه ينتج عن ملف مصدر C ++ يحتوي على رمز كائن meta لهذه الفئات. من بين الأشياء الأخرى ، مطلوب رمز كائن meta لآلية الإشارات والفتحات ، ومعلومات نوع وقت التشغيل ، ونظام الخصائص الديناميكية.

4 من وثائق كيو تي من الإشارات وفتحات

توسيع الماكرو Q_OBJECT بواسطة preprocessor بتعريف العديد من دالات الأعضاء التي يتم تنفيذها بواسطة moc؛ إذا حصلت على أخطاء مترجم بطول "مرجع غير معرّف إلى vtable لـ LcdNumber" ، ربما كنت قد نسيت تشغيل moc أو لتضمين إخراج moc في الأمر الارتباط.

لقد بدأت للتو باستخدام كيو تي ولاحظت أن كل تعريفات فئة المثال لها الماكرو Q_OBJECT الأول. ما هو الغرض من هذا الماكرو preprocessor؟


إنه ببساطة يخبر المترجم المسبق أن هذا الصنف يحتوي على عناصر واجهة المستخدم ويحتاج إلى أن يتم تشغيله من خلال 'moc' تحتاج فقط إلى إضافة هذا إلى الفئات التي تستخدم آلية الإشارة / الفتحة.
ولكن سيتم تجاهلها بهدوء في أي فصول أخرى - إنها تضيف فقط إلى وقت البناء.


من وثائق كيو تي :

Meta-Object Compiler ، moc ، هو البرنامج الذي يعالج ملحقات C ++ في Qt.

أداة moc يقرأ ملف رأس C ++. إذا عثر على واحد أو أكثر من تعريفات فئة تحتوي على الماكرو Q_OBJECT ، فإنه ينتج عن ملف مصدر C ++ يحتوي على رمز كائن meta لهذه الفئات. من بين الأشياء الأخرى ، مطلوب رمز كائن meta لآلية الإشارات والفتحات ، ومعلومات نوع وقت التشغيل ، ونظام الخصائص الديناميكية.


يجب أن يظهر الماكرو Q_OBJECT في القسم الخاص من تعريف الفئة الذي يحدد إشاراته وفتحاته الخاصة أو التي تستخدم خدمات أخرى يوفرها نظام كائن meta في كيو تي.







macros