|
با سلام
چند روز پیش یه پیشنهاد به اقا روزبه مطرح کردم مبنی بر ایجاد یک قسمت برای qt که ایشون گفتن رسیدگی میشه ولی تا اون موقع با توجه به اینکه افراد qt کار ایرانی در اینجا هستن خواهش میکنم اقدام به نوشتن اموزش کار با qt و استفاده از ide های خاص اون برای ایجاد یه برنامه کنن! برای شروع خواهش میکنم یه اموزش خیلی ساده از کلیه مراحل ( طراحی رابط کاربری و کد نویسی و کامپایل ) در اینجا یکی بنویسه تا همه به صورت اولیه با روندش اشنا شیم ممنونم |
Registered Member
|
خب آموزش کیوت که خیلی کار میبره و تقریبا شبیه اینه که مطالب انگلیسی رو به فارسی ترجمه کنیم .
اگه میخوای برنامه نویسی رو به طور جدی دنبال کنی ، دانشتن زبان انگلیسی واجب هست . ( اون هم در محیط لینوکس که مطالب فارسی کمتر وجود داره ! ) یک صحبت کوچیک در مورد کیوت قبلا در اینجا http://mtux.wordpress.com/2008/07/19/linuxdev کردم . راستش هر چی فکر میکنم به طور کلی چطوری بگم ! نفهمیدم ! بهترین کار اینه که شروع به یادگیری یکنی و هر جا مشکل داشتی که نتونستی به جواب برسی یا مسیر رو ندونستی سوالت رو بپرسی . برای شروع هم بهت توصیه میکنم که از کتاب های موجود در زمینه کیوت استفاده کنی و فصل اول یک کتاب رو بخونی و بعد از اون بری سراغ مستندات قوی کیوت . http://doc.qtsoftware.com/4.5/index.html کم کم با کلاس های اون آشنا بشی تا بتونی هر جا لازم بود اونها رو بخاطر بیاری . طراحی واسط کاربر هم با برنامه ی designer هست که با SDK ی کیوت همراه هست و همچنین در مخزن توزیع مورد استفاده ات هم هست فقط باید بسته های مربوط به توسعه کیوت رو نصب کنی (qt-dev) اگه سوالهاتو جزئی تر بپرسی کسی که جوابت رو میده میفهمه که برای یادگیری مشتاق هستی و حاضری کمی وقت بزاری |
Registered Member
|
سلام
فقط این نکته رو هم بگم که مستندات کیوت که لینکش رو بالا دوستمون داد در برنامه ی Assistant وجود داره. با نصب این برنامه به همه ی مستندات دسترسی دارید به علاوه ی امکان جستجو و... برای IDE هم میتونید از Creator استفاده کنید که در واقع جزوی از پروژه ی کیوت هست. البته از اکثر IDEها میتونید استفاده کنید چون آخرش هم باید به زبان C++ (یا python,...) برنامتون رو بنویسید ولی اگه میخواید که یه سری کلمات کلیدی مختص کیوت رو رنگلی نشون بده و... با نصب یک plug in مشکل حل میشه. اکثر IDE های معروف هم برای کیوت یه plug in دارن. من خودم از Emacs استفاده میکنم و با استفاده از لینک زیر یه سری امکانات کیوت رو بهش اضافه کردم. http://www.emacswiki.org/emacs/QtMode راستی KDevelop که فعلا در حالت آزمایشی هست (beta) خیلی امکانات زیاد و خوبی داره. تا چندوقت دیگه که نسخه ی پایدارش منتشر شد حتما یه نگاهی بهش بنداز. موفق باشی... شهاب |
Registered Member
|
KDevelop سری جدید که واقعا شاهکار شده
البته من از Qt Creator هم استفاده کردم اما به نظر من KDevelop خیلی جلوتر هست و همچنین توسعه دهنده های بیشتری داره. ولی قبل از استفاده از IDE ها ، بهتره که از طریق خط فرمان و کار با دستور qmake عملیات کامپایل رو یاد بگیری و بعدا به سراغ IDE بری. |
|
خیلی ممنونم ! چند وقتی بود نتونستم سر بزنم چون خیلی گرفتار کارامم ، ولی من دو محیطی رو که فرمودین دیدم و راستشو بخواین تا جای که کار کردم که البته یه hello world بیشتر نبود گزینه ای برای کامپایل برناممم مثل همه ی ide ها پیدا نکردم حالا یا من خیلی کورم یا روالش یه چیز دیگسش ! :'(
|
Registered Member
|
[quote="pesarkhobeee"]
خیلی ممنونم ! چند وقتی بود نتونستم سر بزنم چون خیلی گرفتار کارامم ، ولی من دو محیطی رو که فرمودین دیدم و راستشو بخواین تا جای که کار کردم که البته یه hello world بیشتر نبود گزینه ای برای کامپایل برناممم مثل همه ی ide ها پیدا نکردم حالا یا من خیلی کورم یا روالش یه چیز دیگسش ! :'( [/quote] هووم ؟! والا نظری ندارم که چرا ندیدیش اما در هر صورت توی منو ها که هست و نمیشه نباشه ! اما همونطور که گفتم فعلا از IDE دوری کن و به کامپایل در حط فرمان و کد نوشتن در ادیتور ساده بسنده کن تا کم کم بری به مرحله بعد |
Registered Member
|
[quote="pesarkhobeee"]
خیلی ممنونم ! چند وقتی بود نتونستم سر بزنم چون خیلی گرفتار کارامم ، ولی من دو محیطی رو که فرمودین دیدم و راستشو بخواین تا جای که کار کردم که البته یه hello world بیشتر نبود گزینه ای برای کامپایل برناممم مثل همه ی ide ها پیدا نکردم حالا یا من خیلی کورم یا روالش یه چیز دیگسش ! :'( [/quote] ببین توی لینوکس نمیدونم تا بحال تجربهای داری یا نه! اما اصولا سیستم اینه که از یک برنامهی کمکی برای کامپایل و مسائل مربوطه استفاده میشه! مثل AutoMake یا CMake یا QMake یا ... و همینطور اینکه کامپایلر برای همه همون کامپایلرهای گنو هستند! یعنی GCC و G++ و ... و این وسط IDE از اینا استفاده میکنه! منم توصیه میکنم که قبل از هرکاری با اینا آشنا بشی! یعنی اول با کامپایلر مربوطه، مثلا برای C++ با برنامهی g++ و سپس با برنامهی build system یا همون کمکی برای کامپایل و ... که مثلا QMake به همراه Qt منتشر میشه و در واقع برنامهی build واسهی Qt هست! البته برنامهی CMake هم که یک برنامهی جداگانه هست، و برای Qt بعضیها(مثل پروژهی KDE) استفاده میکنن جالبه! اما واسه شروع همون QMake راحتتر و در دسترس تره بعد از اینکه با این موجودات آشنا شدی، کار کردن با IDE خیلی سادهتر میشه! در واقع روالها میاد دستت! و برای فعالیت حرفهای برنامهسازی، حتما باید با اینا + یه چیزای دیگهای مثل gdb و برنامههای مرتبط دیگه، هم آشنا بشی! اما اگه بازم اصرار داشتی بدون این چیزا که گفتم شروع کنی، برو سراغه QtDesigner یا KDevelop و یه پروژهی ساده تعریف کن، خودش اینکارها رو میکنه واست! اما مسلما بعدش مجبور میشی اینا رو بفهمی
Choqok developer
|
|
خوب امروز تونستم پیشرفت های زیادی رو در زمینه qt و استفاده از QtCreator داشته باشم اما اولین کدی که امتحان کردم رو خواستم اینجا بزارم تا هم بقیه که مثل منن شاید ازش بتونن استفاده کنن و هم اینکه یه سوال بپرسم!
اولین کدی که امتحان کردم مربوط به ایجادپنجره بود که کدش به شرح زیره:
و اون رو به صورت زیر کامپایل و اجرا کردم:
و جالب اینجاس که اجرا هم میشه اما موقع make یه error میده :
اکثر ارورای امروزمو تو نمونه کد های مختلف فهمیدم جز این که مانع اجرا هم نمیشه! حالا کسی میدونه این چیه؟
Last edited by pesarkhobeee on Fri Aug 07, 2009 8:16 pm, edited 1 time in total.
|
Registered Member
|
hw دیگه چه اسمیه !!!
بنا بر تجربه سعی کن اسم ها رو دست انتخاب کنی حتی اگه داری یک مثال و تست ساده مینویسی اسم فایل رو بزار main.cpp اولین دستوری که نوشتی درست نیست ، باید فایل .pro بسازی که ساختار درونیه ساده ای داره اما شما اومدی فایل آبحکت ساختی ! به روش gcc عمل کردی ! این سه تا دستور رو استفاده کن و به راحتی کامپایلش کن qmake -project qmake foldername.pro make |
Registered Member
|
اینم یه Hello World دیگه (به زبان روبی):
به همین سادگی، به همین خوشمزگی! داخل irb هم میشه اجراش کرد. ;) |
|
خوب من دارم روند اموزش QT رو ادامه میدم و سعی میکنم مطالبی رو که یادمیگیرم به صورت مستند در بیارم شاید به درد یکی دیگه هم بخوره در همین راستا امروز دو تاپست در وبلاگم دادم که گفتم اینجا هم بزارم
چند وقتیه که حرکت زنجان لاگ رو شروع کردیم و خیلی مشتاق بودم که در لینوکس تخصصی تر کار کنم. خیلیا سراغ شبکه در لینوکس میرن و خیلیای دیگه دنبال برنامه نویسی و … من جزو دسته دومم و خیلی دوست دارم برنامه ای که مینویسم تو همه ی سیستم عامل ها اجرا شه چون موعتقدم در نهایت در بهترین حالت سیستم عامل های تجاری در کنار سیستم عامل های اپن سورس در کنار هم به خوبی و خوشی زندگی خواهند کرد و کسانی برنده اند که برنامه هاشون رو هر دو پلتفرم اجرا شه! ( البته این نظر منه) خوب در مقام تحقیق میشه گفت چند تا گزینه خوب برای این کار پیدا کردم : java c c++ Python تمام زبانهای بالا زبانهای خوبی هستن که بسته به شرایط باید استفاده شن اما به نظر خودم زبانی که تا حد ممکن قوی باشه و ساده و در تمام پلتفرم ها یکسان باشه و کتابهای فارسی زیادی داشته باشه و استادشم گیر بیاد java بوده و سعیم کردم که یه کلاس بزارم ولی فعلا بچه های زیادی اعلام امادگی نکردن! خود من مقداری باهاش کار کردم و شاید تنها بدیشو این بدونم که کاربر قبل از استفاده از برنامه جاوای شما JVM رو باید نصب کنه و این برای کاربران عادی جامعه ما یه نمه سخته! البته چیزای دیگه مثل سرعت کمتر برنامه های جاوا نسبت به دیگران و … هست که برا من مهم نبوده! و اما شایددر گزینه بعدی زبان نام اشنای c و c++ باشه اما خوب برای ایجاد برنامه های اپلیکیشن اگر فقط از اینا بخواهیم استفاده کنیم بابامون در میاد چون برا هر چیزی باید کد بنویسیم برای همین ،قالب های کاری (framework) برای این زبان ها ساخته شدن که کارها رو خیلی ساده تر کردن ، در تحقیقاتم به سه موردشون بر خوردم: wxWidgets http://www.wxwidgets.org/ GTK http://www.gtk.org/ QT http://www.qtsoftware.com/products/ و باز هم باید بر اساس شرایط و نیازتون یکی رو انتخاب کنید که با یه خورده گوگل کردن نام های بالا اطاعات زیادی رو راجبشون پیدا کنید و انتخابتون رو اگاهانه انجام بدین. به هزارو یه دلیل شخصی من qt رو انتخاب کردم و سعی دارم هر چیزیو که یاد میگیرم اینجا هم بنویسم! برا اینکه بیشتر با کیوت اشنا شیم قسمتی از متن موجود در ویکی www.pylearn.com رو در اینجا میارم که برای پیدا کردن اطلاعات بیشتر میتونبد به منبع اصلی مراجعه کنید:
خوب بعد از انتخاب زبان و فریم ورک مورد نظرم دنبال یه محیط توسعه خوب (IDE) بودم که باز هم به چند گزینه بر خوردم: Qt Creator kdevelop Edyuk Monkey Studio Qt Visual Studio Integration و فعلا باز هم به دلایل شخصی از Qt Creator استفاده میکنم . به این دلیل میگم دلایل شخصی تا نشون بدم شاید بهترین گزینه نباشه ولی بنا به قانون نسبیت هیچ چیزی مطلق نیست و بنا به شرایط شاید چیزی که در مواقع عادی بد باشه در شرایط شما خوب باشه! بحث فلسفی شد بماند! اما بنا به توصیه بزرگان کیوت کار ایرانی بهتر اول ادم بدون محیط توسعه کد بزنه و کامپایل کنه تا روال دستش بیاد و خوب ما هم یه خورده حرفشون رو گوش کردیم و رفتیم در لینوکسما و کا ر را شروع کردیم و پس از مقداری اشتباه با کمک بزرگان (دستشون درد نکنه) روال دستمون اومد برای مثال بیایید یه برنامه ساده با کیوت بنویسیم: تو یه ادیتور کدهای زیر رو تایپ کنید:
و مثلا با نام window.cpp ذخیره کنید و حالا برای اجرا باید مراحل زیر رو در کنسول لینوکستون در وشه ای که فایل بالا رو ذخیره کردین یکی یکی برین:
خوب نتیجه مراحل بالا اینه که اگه در کدهاتون مشکلی نباشه برنامتون کامپایل میشه و فایل اجراییش اماده میشه و حالا برای اجرا در همون جا دستور زیر روبزنید:
و از اولین برنامتون لذت ببرید! من سعی خواهم کرد تمام تجربیاتمو به صورت مستند در بیارم تا نفرات بعد از من شاید راحتتر باشن |
|
خوب در این قسمت میخوام نمونه کدی رو که در قسمت قبل کامپایل و اجرا کردیم بیشتر تشریح کنم:
این دو قطعه کد کتابخونه های ضروری برای اجرای برناممون رو در کدمون درج میکنه
قطعه کد در تمام برنامه های QT البته بجز کنسولیاش باید باشه و شیع کلی برنامه رو مشخص میکنه
این قطعه کد ابزارک (Widget) اصلی برناممون رو به اسم window تعریف میکنه.
کدهای بالا اول ابزارکمون رو ریساز میکنه و عرض و ارتفاشو تنظیم میکنه بعد عنوان ابزارکمون که در اینجا همون پنجره اصلیمون رو تنظیم میکنه و بعد اونو نمایش میده.
و در اخر توسط این کد حلقه اصلی برنامه شروع میشه.دوستانی که برنامه های c حساس به رویداد نوشتن میدونن که برای اینکه برنامه مدام رخ دادن رویدادها رو چک کنه باید در یک حلقه بی نهایت قرار بدیمش ، من فکر میکنم قطعه کد بالا یه همچین روالی رو شروع میکنه! اینها چیزایی بود که من از این کدها پیدا کردم و شاید توضیحات خیلی بیشتری داشته باشن! در اخرین مورد میخوام راجع به چیستی qmake که باهاش برناممون رو کامپایل کردیم بحث کنم: qmake ابزاری که شرکت Trolltech برای اسان تر کردن روند تولید برنامه در همه پلتفرم ها ایجاد کرده! qmake عمل ساختن makefile برای پروژتون رو اتوماتیک کرده انچنان که فقط با چند خط اطلاعات میتونه makefile بسازه! برای کسانی که makefile روند کلی کامپایل رو نمیدونن متن زیر رو میارم:
از qmake میتونیم در اکثر پروژهای نرم افزاری استفاده کنیم و لزوما نباید با Qt باشن. برای بدسا اوردن اطلاعات بیشتر راجع به qmake به http://doc.trolltech.com/4.2/qmake-manual.html مراجعه کنید.
Last edited by pesarkhobeee on Tue Aug 11, 2009 5:55 pm, edited 1 time in total.
|
|
نمیدونم چرا اینقدر با ادیتور اینجا مشکل دارم کسی نظری نداره چطوری راحتتر میشه تو اینجا با ادیتورش کار کرد؟
|
|
این تاپیک جدا فوق العادست تشکر از همه دوستانی که پر بارش میکنند
پکیج طراحی با کیوت ! Qt Creator IDE Qt libraries Qt development tools Download Qt SDK for Linux/X11 32-bit روش نصب :
Last edited by Anonymous on Wed Sep 02, 2009 2:12 am, edited 1 time in total.
|
|
خوب امروز میخوام برنامه قبلی رو کمی کاملتر کنم و مقداری از خصوصیاتشو تنظیم کنم ! برنامه قبلی رو به این صورت بازنویسی میکنیم:
توسط این کتابخانه ما به مقادیر خصوصیات دسکتاپمان دسترسی پیدا میکنیم! در این مثال برای فهمیدم طول و عرض مانیتور!
برای اینکه بتوانیم به برنامه خودمون یک icon بدیم باید این کتابخونه رو استفاده کنیم.
دو متغیر اول طول عرض پجره برنامه مان را ذخیره میکنند و دو متغیر دوم برای اینست که طول و عرض دسکتاپمان را ذخیره کنند و دو متغیر x و y برای ذخیره محل قرار گیری پنجره است.
کار این کدها بدست اوردن طول و عرض دسکتاپ است ولی دقیقا نفهمیدم چه طوری ؟ اومده یه اشاره گر به نام desktop ساخته و بعد توسط شی ء گرایی فکر کنم ارجاعش داده به دسکتاپ واقعی (فکر کنم)
این خط ها مختصات نقطه ای رو که پنجره برنامه در انجا قرار گیرد حساب میکند.
این کد پنجره برنامه را به مختصات مورد نظر هدایت میکند.
عمل تنظیم tooltip پجره را انجام میدهند.
در این کد ما عکس icon.jpg را که در همان پوشه برنامه است به عنوان ایکون برنامه تعیین میکنیم. خوب در این قسمت ما تونستیم پنجره ای رو در قسمت قبل ساختیم بیشتر شخصی سازی کنیم! علی یارتون
Last edited by pesarkhobeee on Fri Aug 14, 2009 6:05 am, edited 1 time in total.
|
Registered users: bartoloni, Bing [Bot], Google [Bot], Sogou [Bot], Yahoo [Bot]