|
خوب بلاخره به قسمت پایانی اشنایی با کیوت رسیدیم!
در این قسمت از این سری اموزش ها ما برنامه ای رو که در پنج قسمت قبل درست کردیم رو تکمیل میکنیم و کاری میکنیم تا وقتی کاربر روی دکمه برناممون کلیک کرد متن برچسبمون عوض شه و با پایان این قسمت ما در مجموع این شش قسمت با کلیت یک برنامه ساده کیوت اشنا شدیم . و از این به بعد نمونه های اموزشی کیوت رو خیلی راحتتر میفهمیم و اگه کمی پایه باشید! میتونید با کمی تلاش برنامه های ساده ای بنویسید. خوب یکی از ویژگی هایی که کیوت رو نسبت به بقیه متفاوت کرده راهکار اون برای تعامل با رخدادهایی که در برنامه رخ میده! در کیوت مکانیزمی تعبیه شده به اسم Signal & Slot که فلسفه این مکانیزم اینطوری که در برنامه ما که طبیعتا رویدادگراست وقتی که برای یک کنترل یا همون Widget یه شرایط خاص مثلا کلیک شدن پیش میاد اون کنترل از خودش یک نشونه مخصوص این رخداد رو ازاد میکنه که اصطلاحا Signal نامیده میشه ! خوب ما اگه بخواهیم برای این حالت از کنترلمون کدهایی رو بنویسیم باید این کدها رو در یک متد از کلاسمون قرار بدیم که اصطلاحا بهش Slot میگن و تنها چیزی که میمونه اینه که برنامه چطوری باید تشخیص بده وقتی در یک کنترل خاص رویداد خاصی رخ داد اون رو به کدوم Slot ارجا بده که کیوت این کار رو توسط تابع connect اجام میده! شاید نتونسته باشم مطلبو خوب برسونم اما وقتی مثالو ببینید حتما متوجه میشید! خوب اول از همه میریم سراغ فایل سرایندمون که همه چیز کلاسمون در اون تعریف میشه: hello.h به این فایل دو خط زیرو اضافه میکنیم:
خوب همون طور که میبینید در کیوت نسبط به سی پلاس پلاس معمولی چیزهایی اضافه داریم که در اینجا public slots و private slots هست ! کاملا واضحه که داریم اول مشخص میکنیم که اسلات مورد نظرمون public یا private و بعد اونو تعریف اولیه میکنیم. و اما در جایی که میخواهیم از مکانیزم سیگنال اسلات و یه سری چیز دیگه استفاده کنیم باید یه کد خاص رو به اون کلاس که فکر کنم شبیه یه ماکرو باشه رو اضافه کنیم! پس کد Q_OBJECT رو به تعریف کلاسمون به این صورت اضافه میکنیم:
خوب حالا که تعریف اولیه کردیم میریم سراغ فایل اصلی کلاسمون یعنی hello.cpp : یک تابع جدید به کلاسمون اضافه میکنیم که همون اسلات ماست:
خوب در اینجا ما متغیری به نام str از نوع Qstring ساختیم و گفتیم تحت یونیکد utf8 باشه تا با فارسی مشکل نداشته باشیم و سپس متن برچسبمون رو این متغیر قرار دادیم. تنها کاری که میمونه اینه که توسط تابع connect مبدا و مقصد و نوع سیگنال رو مشخص کنیم پس در تابع hello کلاسمون این تکه کد رو اضافه میکنیم:
خوب همون طور که میبینید مثل باقلوا داره منظور ما رو مشخص میکنه!!! در ارگومان اول این تابع کنترل مبدا ما مشخص میشه و در ارگومان دوم ما نوع سیگنال مورد نظر که در اینجا کلیک شدن هست مشخص میشه و در ارگومان سوم مقصد ما و در ارگومان چهارم ما نام اسلات ما مشخص میشه. خوب اگر تغییراتو به درستی اعمال کنید و برنامه رو یک بار کامپایل و اجرا کنید و روی دکمه enter بزنید باید با صحنه زیر روبرو بشید: در اخر کدهایی که در مجموع این شش قسمت تکمیل شدن رو ضمینه میکنم و خیلی راحت میتونید با زدن دستور:
این کدهارو اجرا کنید و برنامه رو ببینید . http://pitm.net/Blog/wp-content/hello.tar.gz به امید اینکه این سری از اموزش ها نظرتونو جلب کرده باشه امیدوارم به بزرگی خودتون خطاهای من رو در نوشتن تجربیات خودم در یادگیری این قالب قدرتمند برنامه نویسی ببخشید. همینجا لازم میدونم باز از کسانی که در این مدت بنده رو راهنمایی کردن تشکر کنم از جمله جناب mtux و اقای اطهری امیدوارم همیشه موفق باشند. امیدوارم منابع فارسی راجع به این موضوعات هر روز بیشتر از روزهای قبل بشه اگر از این نوشته های من بی سواد خوشتون اومد خواهش میکنم یه صلوات هدیه کنید برای ظهور اقا امام زمان. علی یارتون
Last edited by pesarkhobeee on Mon Aug 31, 2009 5:59 am, edited 1 time in total.
|
|
[quote="Yousha"]
سلام دوستان وقتی من دستور qmake رو می زنم میگه bash: qmake: command not found فک کنم میگه نصب نیست و تو مخازن هم نبود من OpenSUSE 11.1 استفاده می کنم دوستان راهنمایی کنن ممنون میشم:) [/quote] سلام به همه من هم همین مشکل را دارم البته اولین راه حلم این بوده که به جای این توزیع از پارسیکس استفاده می کنم دیگه این مشکل پیش نمی یاد اما جایی خوندم که اگه مسیر خودتون رو به root تغییر بدین دیگه ای مشکل به وجود نمی آد |
|
آقا من یه پیش نهاد خیلی سخت واسه آقا فرید دارم
چرا می خوایین این قسمت رو دیگه ادامه ندید؟ نکنه مثل فوتبالیستای با کلاس می خوای تو اوج کنار بری ؟ از این به بعد هم بیاین با هم مطالب جدیدمون رو اینجا بزاریم تا دیگران هم استفاده کنند و مثل من شاید علاقه مند بشن و کم کم خودشون برن دنبال بقیه مسائل منتظر نظرات اساتید هستم |
|
سلام من کی گفتم دیگه ادامه نمیدم؟ گفتم قسمت اشنایی با کیوت تموم شد!
یعنی به صورت اولیه مثل هر زبان دیگه ای روند یک hello world رو رفتیم و با اصول اولیه اشنا شدیم. ایشالله اگه خدا بخواد و خودمم تنبلی نکنمو اساتیدم کمک کنند میخوام روند یادگیری خودمو در مورد کیوت مستند کنم تا نفرات بعد ، حداقل به زبان مادریشون یه چیزایی ببینن انشالله. خیلی هم خوشحال میشم اگر کسان دیگه ای تجربیات و نکاتشونو و حتی شاید اموزش هاشونو اینجا بزارن تا همه استفاده کنیم علی یارتون |
|
سلام
در qt Creator من نتونستم در قسمت ویژگی ها خصیصه ایو پیدا کنم که که مربوط به تنظیم موقعیت پنجره در دسکتاپ باشه ! از اونجایی که یه همچین چیزیو در دیگر ide ها البته در ویندوز دیدم بسیار بعید اومد برام که اینجا هم نباشه البته در ویژگی geometry من به x و y برخوردم اما فعال نیستن !حتی بر فرض فعال بودن اونا چیزی نیستن که من میخوام یعنی center بودن . ایا یه همچین ویژگی ای وجود نداره تو qt creator و باید بوسیله کد نتوشتن این کارارو بکنم یا باز چشمم ندیده؟ |
Registered Member
|
چیو میخوای center کنی!؟
برای جابجایی پنجرهی اصلی از دستور move استفاده کن setGeometry هم باید جواب بده! جفتشون از توی کد
Choqok developer
|
|
یکی از دوستانم این اموزش ها رو خونده بود و وقتی ازش نظرشو پرسیدم گفت : فرید خیلی خوبو جالبه اما اگه ادم بخواد یه برنامه بزرگ بنویسه اینطوری دخلش میاد!
منم گفتم بابا اینطوری نیس که ، این کارو کردیم تا یه بار با روال کلی اشنا شیم و در مرحله بعد با کلاسای کیوت باید اشنا شیم تا بدونیم چه ابزارهایی رو در اختیار داریم و اما در مورد برنامه بزرگ درست کردن هم باید بگم خیلی راحت با IDE های موجود که در قسمت اول معرفی کردم مبشه برنامه رو ساخت. برای همین معادل همون برنامه ای رو که در شیش قسمت اول ساختم با صرف یک ربع وقت با IDE قدرتمند Qt Creator میسازیم تا ببینیم چقدر سادس! خوب این اموزش بیشتر تصویریه تا نوشتاری و فقط جاهایی که احساس کردم احتیاج داره توضیح دادم. از منوی file گزینه new : خوب برنامه مون رو ایجاد کردیم و الان در محیط qt creator میبینیم که تمام فایلهای مورد نیازو خودش ساخته تنها تفاوت فایل های ساخته شده با فایل های خودمون اضافه شدن یک فایل به نام hello.ui هست که پسوند ui به معنای user interface هست ! یعنی برای ساختن رابط کاربری خیلی راحت رو این فایل کلیک میکنیم و بعد با چند تا کلیک تمام کنترل های مورد نیازمونو به برنامه اضافه میکنیمو ویژگیهاشونو تنظیم میکنیم. خوب کسانی که قبلا با محیط های توسعه مثل visual studio کار کردن این نما خیلی اشنا میاد ! همونطور که در عکس هم مشخصه خیلی راحت از پنل سمت چپ کافیه کنترل مورد نظرتو بندازید تو پنجره تون و بعد به صورت گرافیکی از پنل سمت راست ویژگیهاشو تنظیم کنید. این قسمتو توضیح نمیدم چون خودتون با کمی دستکاری میتونید با این محیط اشنا شید و با کمی استفاده از انگلیسی دوران دبیرستانتون میتونید با خصوصیات کنترل هاتون بازی کنیدو یاد بگیرید. خوب حالا موقشه یادمون بیاریم که تو برنامه ای که دستی نوشته بودیم چیا داشتیم ؟ یه دکمه (button) و یه برچسب (label) که بوسیله یه لایه (layout) مرتب شده بودن پس از پنل سمت چپمون دنبال این کنترل ها میگردیمو به پنجرمون اضافه میکنمیم . خوب حالا که کنترل ها رو اضافه کردیم سعی میکنیم که خصیه های کنترل هامونو طوری تنظیم کنیم که انتظار داریم! ولی خوب اگه فقط برای دیدنه اگه همینطوری هم اضافه کنیم کار خواهد کرد. الان ما چهره برناممون رو درست کردیم بدون حتی یه خط کد نوشتن و تنها کافیه بگیم هر وقت روی کلیدمون کلیک شد متن بر چسبمون عوض شه! سیگنال و اسلات که یادتون هست؟ خوب برای اینکار کافیه رو کلید کلیک راست کنید و گزینه Go To slot رو بزنید با اینکار میتونید تمام سیگنالای ممکن رو ببینید و سیگنال مورد نظرتونو انتخاب کنید. خوب از سیگنال ها سیگنال کلیک شدنو انتخاب میکنم و خود برنامه من رو به قسمت ادیتور کدها و به تابعی که اسلات اون سیگنال محسوب میشه هدایت میکنه و کافیه تو اون تابع کد زیرو بزنم:
اگه بخ.ام کدهای بالا رو تشریح کنم باید بگم در خط اول یک رشته به فرمت utf8 درست کردم به نام str و در خط دوم گفتم که در ui یک کنترل دارم به نام label که خصیصه text رو میخام ست کنم و مساوی str قرار بدم. نکته: اینجا یه نکته وجود داره و اونم اینه اگه میخواهید این خط رو توسط قابلیت تکمیل خودکار ادیتور راحت بنویسد یک بار باید روی دکمه کامپایل برنامتون زده باشید تا این قابلیت رو داشته باشین اونم بخاطر اینه که فایل ui ما باید یک بار توسط uic (user interface compiler) کامپایل بشه تا ما بتونیم در اتو کامپلت تمام کنترل های موجود و خصیصه هاشونو ببینیم! خوب با همین دو تاکد برنامه ما به سر انجام میرسه و برای کامپایل کردن هم کافیه روی اون علامت دکه پلی سبز کردن سمت چپ بزنیم تا برناممون به سادگی هر چه تمام تر اجرا بشه! تبریک میگم. اینم از اولین برنامه ما که توسط Qt Creator با سادگی هر چه تمام تر ساختیم . خیلی راحت میتونیم با بازی کردن تو این محیط هر روز چیزای جذاب ترو بهتری بسازیم. لذت ببرید
Last edited by pesarkhobeee on Thu Sep 10, 2009 10:39 pm, edited 1 time in total.
|
|
من تصویری نمیبینم حتی با فیل ش ک ن ... میشه یه جا دیگه آپلود کنید ؟
|
|
رسیدگی شد
خیلی ممنونم مشکل از سرور ما بود که برطرف شد موفق باشید |
|
من یه فایل xml داشتم که توسط یه فایل xslt براش یه اینتر فیس ساختم و خیلی راحت تو فایر فاکس و اپرا میبینمش ، اما وقتی امدم اونو تو مرورگر داخلی qt نشون بدم اونو نشون نداد!
کل هدفم این بود که اطلاعات xml رو بتونم در برنامه qt نشون بدم که با این اتفاق نشد ! میدونم کیوت کلاسهایی برای کار با xml داره ولی پیچیده و گنگ بودن البته از نظر من! شما پیشنهادی برای حل این مشکل ندارید؟ |
Registered Member
|
[quote="pesarkhobeee"]
من یه فایل xml داشتم که توسط یه فایل xslt براش یه اینتر فیس ساختم و خیلی راحت تو فایر فاکس و اپرا میبینمش ، اما وقتی امدم اونو تو مرورگر داخلی qt نشون بدم اونو نشون نداد! کل هدفم این بود که اطلاعات xml رو بتونم در برنامه qt نشون بدم که با این اتفاق نشد ! میدونم کیوت کلاسهایی برای کار با xml داره ولی پیچیده و گنگ بودن البته از نظر من! شما پیشنهادی برای حل این مشکل ندارید؟ [/quote] مشکلت چندان واضح نیست برا من اما یه نگاهی به این سند بنداز: http://doc.trolltech.com/4.5/qtxml.html و این: http://doc.trolltech.com/4.5/qdomdocument.html باید کمکت کنن
Choqok developer
|
|
سلام
من سعی کردم به توصیه جناب mtux عمل کنم و با سایتهای کنترل سورس کار کنم اما در سایت gitorious.org وقتی میام پروژه ای تعریف کنم به مشکل زیر بر میخورم:
که مسیری رو که گفته میرم اما هیچی نیس! چطور میتونم برا این یه کلید ssh تعریف کنم؟ |
Registered Member
|
ssh-keygen
یک جفت کلید ssh برات میسازه! کلید ssh برای امنیت بیشتر تبادل با سرور استفاده میشه! بجای استفاده از پسورد که چند کاراکتر هست و قابلیت دزدیده شدن و حدس زدنش بیشتره! به اینصورت که از اون به بعد، فقط با سیستمی که کلید خصوصی sshات روش هست میتونی با سرور کار کنی! و این کلید خصوصی که با اسم ~/.ssh/id_dsa یا ~/.ssh/id_rsa خواهی داشتش! حکم کلید رو داره که اگه گمش کنی، یا دست کسی بیوفته میتونه ازش استفاده کنی این دو تا اسم dsa و rsa هم دو نوع مختلف از رمزنگاری هستن! زیاد مهم نیست، هرکدوم رو بسازی، کافیه کلید عمومی (public) رو به سایت بدی! موفق باشی
Choqok developer
|
|
[quote="maour"]
hw دیگه چه اسمیه !!! بنا بر تجربه سعی کن اسم ها رو دست انتخاب کنی حتی اگه داری یک مثال و تست ساده مینویسی اسم فایل رو بزار main.cpp اولین دستوری که نوشتی درست نیست ، باید فایل .pro بسازی که ساختار درونیه ساده ای داره اما شما اومدی فایل آبحکت ساختی ! به روش gcc عمل کردی ! این سه تا دستور رو استفاده کن و به راحتی کامپایلش کن qmake -project qmake foldername.pro make [/quote] من همین دستورات رو زدم ولی ارور میده
البته نگید این دیگه چه کدیه چون توی Qt Creator کار میکنه
|
|
وقتی میخواید وارد ویندوز بشید اونجا که پسورد رو باید وارد کنید یه چیزی شبیه این نوشته Enter password که وقتی روش کلیک میکنیم میره
میخوام بدونم چجوری میشه برای QLineEdit هم همچین چیزی درست کنم؟؟؟؟ لطفا کمکم کنید؟؟؟؟؟؟! |
Registered users: bartoloni, Bing [Bot], Google [Bot], Sogou [Bot], Yahoo [Bot]