تبلیغات
Qt Developer Blog - Meta-object Compiler moc

کیوتی ساده و آسان برای همه

Meta-object Compiler moc

نویسنده :سعید دادخواه
تاریخ:یکشنبه 26 دی 1389-09:18 ب.ظ

مفهوم سیگنال و اسلات موجود در کیوتی یه مفهوم محض سی پلاس پلاس نیست یعنی سی پلاس پلاس استاندارد چیزی به نام سیگنال و اسلات نداره بلکه این مفاهیم توسط کیوتی به سی پلاس پلاس اضافه شده است .به همین دلیل برنامه ای به نام moc(meta object compiler ) برای تبدیل سیگنال و اسلات ها به سی پلاس پلاس استاندارد استفاده میشه.moc  برای هر کلاسی که از QObject ارث برده باشه یه فایل سی ++ اضافه ایجاد میکنه 

Property system
هر کلاسی در کیوتی میتونه مجموعه ای از ویژگی ها رو داشته باشه ( property ) که میتونند مورد بررسی و ست کردن قرار بگیرند. برای مثال QLabel دارای ویژگی text هست که مقدار این ویژگی متنی است که لیبل نمایش میدهد . برای هر ویژگی دو تابع وجود داره یکی برای برگرداندن مقدار فعلی اون ویژگی و دیگری برای ست کردن مقدار جدید برای اون ویژگی. مثلا در مورد QLabel تابع text() مقدار فعلی رشته موجود در اون لیبل رو بر میگردونه و setText()مقداری جدید به اون نسبت میده. این خصوصیت مربوط به کلاس هایی است که از QObject ارث برده میشوند و ما با تابع   QObject::property() میتونیم کلیه ویژگی های یه کلاس رو برگردونیم و با تابع QObject::setProperty() میتونیم مقدار یه property رو ست کنیم . نکته بسیار مهم و کلیدی و دلیل انعطاف این سیستم این هست که تابع اول لیستی از QString ها رو به ما برمیگردونه و تابع دوم هم یه QString از ما انتظار داره برای تعیین property . حسنی که این روش داره اینه که شما هرچقدر که دلتون خواست میتونید property به کلاستون اضافه کنید بدون اینکه کد های قبلی تغییر کنند . درست مثل property editor موجود در QtDesigner 

خلاصه مطلب این که moc برای هر کلاسی که از QObject ارث برده شده نیاز هست .  قبل از اینکه کامپایلر سی ++ دست به کار بشه باید این کامپایلر تمام فایل هایی که ویژگی ذکر شده رو دارند رو بررسی کنه و کدی تولید کنه که در فایلی به نام moc_nameoffile.cpp برای مثال ذخیره بشه.


نوع مطلب : عمومی 

داغ کن - کلوب دات کام
نظرات() 
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر