View Full Version : سوال: نقش توابع set و get در کیوت چیست؟
complexcoding
دوشنبه 03 مهر 1391, 23:16 عصر
با سلام
می خواستم بدونم نقش توابع ست و گت در کیوتی چیست ؟ با توجه به اینکه برای تغییر ساختار یک کنترل هم QML داریم و هم Stylesheet ؟
خیلی ممنون از کمکتون
حامد مصافی
سه شنبه 04 مهر 1391, 12:20 عصر
متوجه منظورت نشدم. میشه بگی کجا همچین چیزی دیدی؟ میشه کد رو کپی کنی؟
complexcoding
سه شنبه 04 مهر 1391, 14:58 عصر
با تشکر
اینچیزی که گفتم رو در یک پی دی اف خوندم من نیز تازه کار هستم و برای متوجه شدن این مباحث یک خورده ای زمان می بره. این کدهاشه:
QString text()
{
return m_text;
}
void setText(Qstring newText)
{
m_text=newText;
}
اینم توضیحات پی دی اف:
برای اینکه برنامه نویس نتواند Property ها را دستی تغییر دهد و کنترل برنامه را بهم بریزد،
Property ها مستقیما قابل تغییر نیستند. برای تغییر هر متغیری که Property است، باید از تابع
استفاده کرد. بنابراین شما اصلا متغیر m_text مربوط به txtInput را نم یبینید، بلکه با تابع setText
مقدار آنرا تغییر می دهید و اگرم یخواستید مقدار آنرا بدانید یا جایی استفاده کنید، بازهم از تابع text
استفاده می کنید و هیچگاه مستقیما به m_text دسترسی ندارد.شاید به نظر برسد وجود این دو تابع معقول نیست و کارکردن مستقیم با متغیر ساده تر است،
اما معمولا توابع get و set دارای کدهای دیگری جهت کنترل برنامه هستند (مثلا hide نه تنها _ m
visible را false می کند، بلکه دکمه را یکبار دیگر نیز رسم می کند)
returnx
سه شنبه 04 مهر 1391, 17:03 عصر
من دقیقا باز هم متوجه منظورتون نشدم!!
ولی در واقع ما بلاک هایی در C# به عنوان get و Set داشتیم که بطور مثال اینطور استفاده میشد:
privatestring _current_filename;
publicstring current_filename
{
get { return _current_filename; }
}
در مثال بالا اگر بنامه نویسی دیگه ای از کلاس من استفاده کنه دیگه نمیتونه به خصوصیت Current file name ، مقدار خاصی بده (برای جلوگیری از اشتباه در استفاده از این کلاس!!) و در صورتی که اینکار کنه با این خطا زیر مواجه میشه :
Error 2 Property or indexer 'Map.Classes.Layer1.current_filename' cannot be assigned to -- it is read only G:\Program\C#\Map\Map\Form1.cs 63 13 Map
و برای Set :
public
string x
{
set {
try
{
temp_x =
Convert.ToInt32(value);
}
//End Try
catch
{
err =
true; //Error
}
//End Catch
}
//End Set
}
//End Varible Block
(البته این دو مثال از دو کلاس جدا بود و ربطی به هم ندارند و فقط صرفا کاربرد get و Set رو نشون میده)
اما بعید میدونم همچین چیزی تو C++ وجود داشته باشه!؟
rubiks.kde
چهارشنبه 05 مهر 1391, 16:07 عصر
اگه داری از property ها توی Qt استفاده می کنی می تونی به آدرس زیر مراجعه کنی تا هم با سیستم property های Qt و همچنین نقش کامل توابع set , get توی درسترسی به property ها آشنا شی
http://doc.qt.digia.com/4.4/properties.html
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.