تبلیغات
Qt Developer Blog - Meta-object Compiler moc
 
Qt Developer Blog
کیوتی ساده و آسان برای همه
                                                        
درباره وبلاگ

در این وبلاگ کیوتی که مجموعه ای از کلاس ها برای برنامه نویسی دلپذیر تر با سی پلاس پلاس هست آموزش داده میشود
مدیر وبلاگ : سعید دادخواه
نظرسنجی
آموزش ها به چه صورتی باشد






آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
یکشنبه 26 دی 1389 :: نویسنده : سعید دادخواه
مفهوم سیگنال و اسلات موجود در کیوتی یه مفهوم محض سی پلاس پلاس نیست یعنی سی پلاس پلاس استاندارد چیزی به نام سیگنال و اسلات نداره بلکه این مفاهیم توسط کیوتی به سی پلاس پلاس اضافه شده است .به همین دلیل برنامه ای به نام 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 برای مثال ذخیره بشه.




نوع مطلب : عمومی، 
برچسب ها : moc، Qt moc، QT moc، meta-object compiler، آموزش کیوتی، کیوتی، Qt، QT،