تبلیغات
Qt Developer Blog - Signals and Slots part one
 
Qt Developer Blog
کیوتی ساده و آسان برای همه
                                                        
درباره وبلاگ

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






آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
شنبه 25 دی 1389 :: نویسنده : سعید دادخواه
سلام خدمت دوستان عزیز
یکی از مفاهیم کلیدی در مورد برنامه نویسی در کیوتی مبحث سیگنال و سلات هستش . این مفاهیم در واقع ابزار های ارتباط اشیاء یک برنامه با هم هستند.
ادامه مطلب رو از دست ندین
همون طور که گفتم سیگنال و اسلات ها مفاهیمی هستند که دو قسمت برنامه رو یه جوری به هم ربط میدند.ببینید مفهومی که در برنامه های امروزی مطرح هست مفهوم مبتنی بر پیغام هست یعنی چی ؟ ببینم شما پیش مادرتون می ایستید و مرتب میگی چی کار داری چی کار داری چیکار داری ; مسلما نه ! شما منتظر هستید پیغامی از مادر ( صدا کردن شما ) صادر بشه و شما با توجه به نوع پیغام جواب اونو بدین . توی برنامه نویسی هم همین طور هستش مثلا سیستم عامل برای شما پیغام میفرسته که فلان نقطه شما کلیک شد . یا پیغام میده که موس روی نقطه x , y شما حرکت کرد . این وظیفه شما است که اون پیغام رو هندل کنید.
حالا ما میخوایم توی کیوتی یه جوری این مکانیزم رو ایجاد کنیم . فرضا وقتی یه دکمه کلیک شد داد بزنه آی من کلیک شدم و اگه کسی با کلیک شدن این دکمه کار داره خوب جوابشو بده.
دقیقا این مفهوم توی کیوتی هستش . یه شی ای یه signal یی رو emit میکنه و خوب یه slot یی باتوجه به این که آیا منتظر اون signal بوده یا نه صدا زده  میشه . این سخت ترین جمله ای که شما باید خوب بفهمید. پس سیگنالی ارسال میشه و اسلاتی فراخونده میشه . پس اسلات اساسا یه تابعه . و این که سیگنال چیه مهم نیست .
در کیوتی برای اینکه کلاسی بتونه سیگنالی دریافت کنه یا یه سیگنالی بفرسته نیاز داره که از نسل QObject باشه . نکته دیگه این که سیگنال و اسلات های ضروری به صورت پیش فرض تعریف شده اند و شما هم توانایی تعریف چیزایی که خودتون نیاز دارین رو هم دارین . مثلا در مورد دکمه شما سیگنال کلیک شدن رو دارین . یعنی چی ؟ یعنی این که شما میتونید یه تابعی ( اسلاتی ) رو مامور کنید که منتظر ارسال شدن این سیگنال باشه . پس اگه بیاین و یه جوری سیگنال کلیک شدن یه دکمه رو به یه تابعی وصل کنید هر وقت روی یه دکمه کلیک شد اون  اسلاته فراخونده 
میشه
برای وصل کردن یه سیگنال به یه اسلات از  تابع connect که عضو استاتیک کلاس QObject هست استفاده میکنیم
این تابع چهار تا پارامتر میگیره  : اشاره گری به فرستنده سیگنال , اینکه چه سیگنالی از فرستنده مد نظره , اشاره گری به گیرنده , چه سلاتی از گیرنده صدا زده بشه .
تیکه کد زیر رو ببینید
signal
دکمه ای ایجاد کردیم و  بعد با استفاده از تابع استاتیک عضو کلاسQObject که همون تابع connect هستش سیگنال کلیک ارسالی از دکمه رو به اسلات خروج qApp وصل کردیم .
نکات مهم:
برای تعیین یه سیگنال در تابع connect باید به همین فرمی که نوشتم عمل کنیم (SIGNAL(name of signal درمورد اسلات هم همین قضیه صادقه یعنی باید حتما اونو در SLOT گذاشت.
qApp اشاره گری سراسری به QApplication شما ست یعنی مثلا در اینجا qApp با آدرس a هیچ فرقی نداره. خوبیش اینه که خوب در هر جایی از برنامه قابل دسترسیه .مثلا ممکنه شما در تابع main نباشید و بخواین یه کاری که مربوط به QApplication شماست انجام بدین . و این کلاس (QApplication) یه اسلاتی داره که quit نام داره و باعث خروج از برنامه میشه . 
نکته دیگه این که شما نمیتونید هر سیگنالی رو به هر اسلاتی وصل کنید که موضوع مطالب بعدی خواهد بود . فعلا




نوع مطلب : عمومی، 
برچسب ها : qt، Qt، QT، آموزش کیوتی، آموزش کیوت، آموزش کیوتی به زبان فارسی، سیگنال ها در کیوتی، اسلات ها در کیوتی، SIGNAL، SLOT، signal in qt، slot in qt، سیگنال، اسلات،