تبلیغات
Qt Developer Blog - دیالوگ ها بخش اول
 
Qt Developer Blog
کیوتی ساده و آسان برای همه
                                                        
درباره وبلاگ

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






آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
جمعه 8 بهمن 1389 :: نویسنده : سعید دادخواه
دیالوگ ها
از این لحظه وارد قسمت دیالوگ ها میشیم. دیالوگ ها فرم هایی هستند که برای ارتباط با کاربر در حین برنامه مورد استفاده قرار میگیرند . دیالوگ ها انواع مختلفی دارند و یا ممکنه جاهای مختلفی مورد استفاده قرار بگیرند. با توجه به اینکه کجا استفاده میشند باید ویژگی خاصی داشته باشند. مثلا در مورد یه فرم تنظیمات که باید با دیالوگ ها در کیوتی ساخته بشند تا زمانی که کاربر این دیالوگ را تایید نکنه نباید بشه به برنامه اصلی برگشت .اما مثلا در یه دیالوگ سرچ دیگه این قضیه صادق نیست همون طور که در برنامه هایی مثل اکسپلورر ها دیدین دیالوگ هم زمان با برنامه اصلی فعال هست ( راستی این که میگم دیالوگ و برنامه اصلی شاید تلقین بشه که برنامه ما و دیالوگ جدا از هم هستند که این طور نیست برای تمایز بینشون از این لفظ استفاده کردم وگرنه این دو در یک برنامه هستند ) با این حساب به دیالوگ با انواع مختلف نیاز مندیم :

دیالوگ های مدال Modal Dialogs
برخی از مواقع در برنامه ها دیدین که برنامه با رسیدن به بعضی از دیالوگ ها اصطلاحا بلاک میشه و تا زمانی که ارتباط کاربر با اون دیالوگ برقرار بقیه برنامه قابل دسترسی نیست .در این دیالوگ ها معمولا چیزایی قرار داده میشه که برنامه قبل از ادامه به کارش نیاز داره اونا رو بدونه . مثلا همین الان ctrl+o رو بزنید محاله بتونید تازمانیکه دیالوگ open باز هستش با قسمت های دیگه ارتباط برقرار کنید.به این دیالوگ ها Modal گفته میشه .

زمانی که شما یه شی از کلاسی که پایه اش QDialog باشه بسازید چیزی به شما نمایش داده نمیشه (درست مثل widget ها). با استفاده از تابع exec عضو کلاس QDialog شما در واقع دیالوگتون رو نمایانش میکنید یک . دوما یه event loop جدید برای اون دیالوگ ایجاد میکنید .بنابر این این شباهت اسم تابع گفته شده با تابع عضو کلاس QApplication کاملا قابل تفسیره . با اجرای این تابع دیالوگ شما نمایش داده میشه و در ضمن قسمت های دیگه برنامه هم بلاک میشه

کد:
 

QFileDialog dialog; int status = dialog.exec();
مثلا کد بالا رو ببینید . قبلا QFileDialog رو دیده بودیم . با ساختن یه شی ازش و exec کردن اون دیالوگ ما نمایش داده میشه و در ضمن تا زمانی که از دیالوگ نمایش داده شده یا با استفاده از تابع accept و یا reject ( توضیح داده میشوند ) خارج نشیم تابع exec باز نخواهد گشت. یعنی دستورات بعد از این تابع ، بعد از اینکه دیالوگ بسته شد اجرا میشند.
خوب تابع exec با دو مقدار میتونه برگرده . یا قبول دیالوگ یا رد دیالوگ . فرضا ما میخواهیم یه سری تنظیمات رو اعمال کنیم اگه مقدار بازگشتی قبول بود اعمال کنیم و اگه رد بود اعمال نکنیم . این مقادیر با دو enum قابل تشخیص هستند . QDialog::Accept و QDialog::Reject . این دو در if قابل استفاده هستند.
در ضمن وقتی از QDialog ارث بردیم و داریم در این کلاس کد مینویسیم میتونیم با تابع accept عضو کلاس QDialog دیالوگمون رو با مقدار بازگشتی QDialog::Accept ببندیم و تابع reject() برای بستن دیالوگ با مقدار QDialog::Reject استفاده میشه.




نوع مطلب : کلاس های Qt، ویدجت های Qt، 
برچسب ها : Qt، QT، qt، QDialog، dialogs in qt، Qt Dialogs،