# Native Code > برنامه نویسی با C > برنامه نویسی در محیط QT و هم خانواده هایش > سوال: ویجت تقویم شمسی برای کیوت؟!

## mousamk

خب همونطور که همه برنامه نویسان ایرانی مستحضر هستند، یکی از مهمترین کامپیوننتهای UI که در هر فریم ورکی لازم داریم، date picker شمسی است.
تقریبا در هیچ زبان یا فریمورکی چنین چیزی از ابتدا وجود ندارد و خودمان باید آن را تهیه کنیم. برای پرکاربردهایی مثل #C یا جاوا  دوستان زیادی دست به کار شده اند و محصولات زیادی تولید کرده اند که نیاز به دوباره کاری دیگران را رفع کرده است.

ولی برای Qt تا جایی که من سرچ کردم، چیزی در این باره پیدا نکردم.
سؤال این که آیا چنین چیزی موجود است یا این که دیگه وقتشه خودمون دست به کار بشیم و این نیاز مهم رو مرتفع کنیم؟

----------


## glassysmart

سلام
من هم فکر نکنم چیزی پیدا بشه اما من یه ایده خوب دارم . بیایید تا یه مسابقه در طراحی این ویجیت ترتیب بدیم نظر شما چیه؟

----------


## mousamk

مسابقه میتونه خوب باشه برای ترغیب، ولی راه اندازیش کمی کار داره.

به نظر من بیاییم برای ساخت این ویجت، یه پروژه (مثلا تو سورس فورج) شروع کنیم و چند تا از دوستان که آشنایی خوبی با Qt دارن رو دعوت کنیم و همگی باهم یه پروژه خوب رو بسازیم، خیلی بهتر باشه.
برای #C آدمای زیادی دست به کار شدن، ولی هر کسی برای خودش یه چیزی ساخته که یه سری نقاط قوتی داره و یه اشکالاتی داره. من خودم یادمه تعداد زیادی از اونا رو استفاده کردم ولی هیچ کدومشون عالی نبود.

میتونیم تقسیم کار هم داشته باشیم و هر کسی کار خودش رو توسط svn انجام بده و در نهایت محصول نهایی از ترکیب اونا ساخته بشه.
مثلا یکی دو نفر نفر میتونن مسئولیت تبدیل تاریخ شمسی به میلادی و برعکس رو برعهده بگیرن. (الگوریتم های ساده موجود مثل اینجا فقط برای بازه کوتاهی حدود 100 سال درست جواب میدن. تهیه یه الگوریتم تبدیل با دقت خیلی خوب، مثل چیزی که در دات نت پیاده سازی شده، کار خیلی زیادی لازم داره)
چند نفر هم میتونن بخشهای مختلف UI رو برعهده بگیرن: پنل نمایش سالها و جلو و عقب بردن و انتخاب سال؛ پنل نمایش ماهها و انتخاب ماه؛ همین طور برای روز.
حالتهای دیگه این date picker مثلا به جای پنل، فقط دکمه های بالا و پایین داشته باشه (مثل spinbox).

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

----------


## glassysmart

سلام
ببخشید مثل اینکه عجله کردم

----------


## glassysmart

سلام
خوب اینم از ورژن اول  ، این datapicker ای است که من نشته ام و در آن از الگریتم های ساده ای استفاده کرده ام . مرا به خاطر  شلوغ و غیر حرفه ای بودن کد ببخشید 
از این سه تابع برای زیبا سازی استفاده کنید
void setTitelStyleSheet(QString );
void setCellStyleSheet(QString );
void setSelectedCellStyleSeet(QString );
و برای به دست آوردن تاریخ انتخاب شده از تابه زیر:
Date selectedDate(ToDate);
 این ToDate  یه enum است که مشخص می کند که شمار تاریخ انتخاب شده را به میلادی می خواهید یه به جلالی
و برای انتخاب کردن یک تاریخ مشخص از تابه زیر استفاده  کنید:
void selectDate(int year ,int month , int day,ToDate t);
 که با toDate  مشخص می کنید تاریخی که وارد کرده این به میلادی است یا خورشیدی 
اگر ایده یا نظری دارید می توانید به من بگویید اگر در توان داشتم آن را در این پروژ ه وارد می کنم
و در آخر باید از مسئولین سایت farsiweb و starcalender تشکر کنم

----------


## mousamk

بسیار عالی :)
واقعا دست شما درد نکنه.

فکر میکنم اگر اینو به پلاگین Designer تبدیل کنید تا کار باهاش هر چه راحتتر بشه، دیگه یه نمونه کامل میشه.
همچنین فکر میکنم اگه به صورت پیش فرض حالت compact داشته باشه (مثلا شبیه یه combo box یا شبیه همون datepicker خود کیوت) و بعد با زدن یه دکمه، پنجره انتخاب سال و ماه و روزش باز بشه، بهتر میشه. چون الان در این حالت جای زیادی میگیره.

من خودم متأسفانه الان آخر کارشناسیمه و درگیر پروژه های نهایی درسها و پایان نامه هستم و دیگه وقتی ندارم، ولی در اولین فرصت روی این موضوع کار خواهم کرد.

----------


## glassysmart

سلام اینم ورژن 2 ببخشید که دیر شد حالش نبود
و این تابع هم اضافه  شده
void setTopTitleStyleSheet(QString)

----------


## kitten

سلام ممنون چیز جالی شده:
اجازه هست منم روی این کد کار کنم؟ :لبخند گشاده!: 
البته فکر کنم الگوریتمی که استفاده کردید کامل نبوده چون امروز را به من  اشتباه نشون میده امروز که سه مرداد هست و دوشنبه را به من 4 مرداد و سه  شنبه نشون می ده 
می تونیم تو یه سایت مثل سورس فورج یه پروژه باز کنیم و روش کار کنیم اگه دوست داشته باشید

----------


## glassysmart

سلام
اینم ورژن جدید

----------


## حامد مصافی

بهتره در سایت qt-apps.org آپلودش کنید تا پیدا کردنش برای بقیه هم آسون تر باشه

----------


## glassysmart

سلام
 اینم یه برنامه تست کوچک و کمی تغییر

----------


## ghasem.fattahpour

خوبه واقعا داره چیزه خوبی از کار در میاد.

----------

