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

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






آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
سلام

معمولا ما خیلی از ورودی های مورد نیازمون رو از کاربر میگیریم حالا چه با استفاده از QLienEdit یا بااستفاده از ویدجت های دیگه که برای این کار در نظر گرفته شده است.

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

QIntValidator:
برای بررسی اینکه ایا مقدار ورودی کاربر یه عدد دهدهی هست از این کلاس و شی ساخته شده از این کلاس استفاده میکنیم . به این صورت که :

QIntValidator* decValidatornew QIntValidator(0, 255, decEdit);
decEdit->setValidator(decValidator);

خوب در سازنده کلاس QIntValidator ما دوتا عدد فرستادیم که اولی مشخص کننده حداقل مقدار مجاز برای داده ای که باید مورد ارزیابی قرار بگیره و دومین عدد حداکثر مقدار مجاز.

سومین متغیر هم تعیین کننده پدر این validator هستش.طبق مطالبی که قبلا گفته شد در این صورت تا مادامی که شی پدر یعنی decEdit که یه QLineEdit هستش زنده هست ارزیاب اون هم یعنی decValidator زنده است. تابع setValidator هم برای تعیین یه validator برای یه QLineEdit هستش . بعد از این مرحله decValidator چشم میدوزه به مقادیر ورودی در decEdit هر موقع مقادیر وارد شده  از شرط ما تخطی کردند مقدار جدید در decEdit وارد نخواهد شد.

QRegExpValidator:

با استفاده از این کلاس و قدرت regular expression ها شما به راحتی میتونید چک کنید ( برای مثال )‌که آیا آدرس ایمیل وارد شده از طرف کاربر مجاز هست; آیا عدد باینری وارد شده توسط کاربر مجاز هست ; آیا عدد هگزای وارد شده توسط کاربر مجاز هست یا نه ; و صد ها مثال دیگه .
اما مفهوم regular expression چیه : regular expressions یا عبارات باقاعده مجموعه قوانینی هستند که با استفاده از اونا شما میتونید الگویی که رشته میتونه داشته باشه رو تعیین کنید . برای مثال ببینید آیا الگوی ایمیل به صورت زیر هست یا نه 

(یک یا بیشتر حرف یا رقم).(یک یا بیشتر حرف یا رقم)@(صفر یا بیشتر حرف یا رقم)(یک حرف)
البته ممکنه برخی قواعد رو من رعایت نکرده باشم ولی میخواستم با مفهوم آشنا بشیم. ما با reg exps این الگو رو تعریف میکنم و فرضا به QLineEdit دستور میدیم تنها براساس این الگو میتونی کاراکتر بگیری ولاغیر .یعنی مثلا حق نداری در ابتدا یه رقم بگیری و ...
البته regular expressions یکم پیچیده هستند و  تسلط بر مبحث عبارات با قاعده زمان میبره که میتونید به
 این آدرس برای یادگیری اونا مراجعه کنید

QRegExpValidator* hexValidator =new QRegExpValidator(QRegExp("[0-9A-Fa-f]{1,2}"), hexEdit);
hexEdit->setValidator(hexValidator);
مثل مثال قبلی ما یه شی از کلاس QRegExpValidator ساختم و در سازنده شی ای از کلاس QRegExp رو براش فرستادیم . چون مبحث regular expression ها بسیار پر کاربرد هستش درکیوتی برای کاربا آنها یک کلاس تعریف شده به نام QRegExp . الگویی که ما قصد داریم مقادیر ورودی بر اساس اونا باشه با سازنده کلاس QRegExp ارسال میشه که در انیجا الگویی برای تشخیص اعداد هگزا دسیمال هستش.
مثلا مفهوم متن الگوی ما در این مثال یعنی اینکه ورودی باید حداقل یک کاراکتر صفر تا نه یا A تا  F  یا a تا f و حداکثر دو کاراکتر با همان ویژگی ها باشه که قابل پذیرش باشه

نه خسته !




نوع مطلب : عمومی، 
برچسب ها : QIntValidator، QRegExpValidator، بررسی مقادیر وارد شده، Qt، QT، qt،