لطفا وارد شوید یا ثبت‌نام کنید تا به انجمن‌ها دسترسی کامل داشته باشید.



 
امتياز موضوع :
  • 0 رأي - معدل امتيازات : 0
  • 1
  • 2
  • 3
  • 4
  • 5
برنامه نویسی به زبان QT همگی بیایین
2005-05-10, 11:23 PM,
ارسال : #1
برنامه نویسی به زبان QT همگی بیایی
سلام !
و اما همونطور که گفته بودم درس اول آموزش زبان برنامه نویسی QT رو به شما یاد خواهم داد ، البته بگم که من اصلا هیچی
بلد نبودم چون با زبان C و ++C کار کرده بودم تونستم در عرض یک روز یک کم قلق این نرم افزار دستم بیاد .
وحالا درس رو با اجازه بزرگترها شروع می کنیم

ببینین بچه ها کار میشه گفت ساده هستش وفقط شما باید یه کم علاقه نشون بدین

و همینطور از پرسید اشکالات در این انجمن خودداری کنید تا انجمن به صورت مرجعی برای آموزش در اختیار همه قرار بگیره
سئوالات خودتون رو در یه انجمن دیگه مثلا با نام رفع اشکالات مطرح کنید باشه ؟

خوب توجه داشته باشید برای اجرای برنامه های نوشته شده به این زبان باید مراحل زیر رو با دقت دنبال کنید توجه داشته باشید که
من برنامه ها را اجرا و آزمایش می کنم تا اشکالاتی وجود نداشته باشه

در هنگام ذخیره فایل سعی کنید یک شاخه برای برنامه های نوشته شده ایجاد کنید ، فرقی نمی کنه نام برنامه چی باشه

بعد ترمینال رو باز میکنید
با دستور CD وارد شاخه مورد نظر می شوید
دستورهای زیر به ترتیب اجرا می کنید :
[ltr]
qmark -project
qmark
make
[/ltr]
دستور اول باعث ایجاد یک پروژه میشه
دستور دوم باعث ایجاد یک make file میشه
دستور سوم باعث ایجاد یه برنامه قابل اجرا در سیستم عامل لینوکس میشه

بعد از اجرای آخرین دستور شما می تونید فایلی که قابل اجراست رو با دوبار کلیک کردن داخل همون شاخه اجرا کنید

نرم افزار QT رو بازکنین و از دیالوگی که باز میشه گزینه C++ SOURCE رو انتخاب کنین در این حالت یک صفحه خالی ظاهر میشه

کد زیر رو داخل اون تایپ کنین
[ltr]
/****************************************************************
**
** Qt (best learning in <!-- w --><a class="postlink" href="http://www.makouonline.com">www.makouonline.com</a><!-- w -->)
**
****************************************************************/

#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>


int main( int argc, char **argv )
{
QApplication a( argc, argv );

QPushButton quit( "Quit", 0 );
quit.resize( 75, 30 );
quit.setFont( QFont( "Times", 18, QFont::Bold ) );

QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );

a.setMainWidget( &quit );
quit.show();
return a.exec();
}
[/ltr]
خوب حالا توضیح برنامه:
[ltr]
#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>
[/ltr]
این خط ها برای استفاده توابع و دستورات زبان برنامه نویسی سی به کار میره که نشون میده دستورات و توابع از چه فایلهایی باید فراخوانی بشن
شما هم می تونید بعد جزو سازندگان این HEADER ها باشید

int main( int argc, char **argv )

در زبان برنامه نویسی تحت داس به احتمال قوی این دستور رو دیدید این دستور میگه که تابع اصلی main از
دو قسمت int argc,char **argv برای داخل کردن آرگومان از یک منبع خارجی میتونه استفاده کنه بدون اینکه نیاز به
وارد کردن اون در داخل برنامه بشه

مثلا شما در سیستم عامل داس این دستور رو بکار می بردین

copy <drive><path>filename1 <drive><path>filename2

خوب قسمت اول محل وجود فایل و قسمت دوم مقصد فایل برای کپی فایل است
اگه بخواییم صریحا با دیتورات سی براتون کاملش کنم این طوری میشه
در تابع main گزینه int argc تعداد آرگومانها رو حساب می کنه
و گزینه char **argv دستور و یا رشته ای که برای فراخوانی از سطح سیستم عامل در نظر گرفته میشه رو پیدا میکنه

در نتیجه دستور کپی سیستم عامل داس شامل 3 argc و دو argv هستش


QApplication a( argc, argv ); دستور
یک تابع بانام a با دو آرگومان اجرا از سطح خارج هستش
دستورات بعدی به ترتیب ساخت یک کلید - تغییر اندازه کلید -و فونت کلید هستش

دستور QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
این کار رو میکنه:
باتابع connect کلید که نام اون quit در نظر گرفته شده با اکشن کلیک بر روی اون و اجرای دستور quit برای خارج شدن از برنامه اتصال میده
و برنامه هینطور ادامه پیدا میکنه

به همین راحتی .
بقیه دستورات و تابع ها رو بعدا براتون ترجمه می کنم

حالا یه تمرین برای شما

برنامه بنویسید که یک کلید با نام Exit Windowds رو ایجاد کنه
و با کلیک برروی اون از برنامه خارج بشه
البته من هم اشکال دارم که به زودی رفعشون می کنم
از رفع اشکالات در این انجمن لطفا خودداری نمایید
با تشکر تا بعد که حتما میام
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-10, 11:25 PM,
ارسال : #2
 
رفع اشکالا ت و پرسش و پاسخ یه انجمن دیگه !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! خواشا ً
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-10, 11:30 PM,
ارسال : #3
 
خیلی ممنون! منتظر مقالات مفصل تر دیگه ی شما هستم ولی باید بگم که Qt یک نرم افزار نیست! یا یک زبان برنامه نویسی!

<!-- m --><a class="postlink" href="http://mahdiabasi.persianblog.com">http://mahdiabasi.persianblog.com</a><!-- m -->
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-11, 04:57 AM,
ارسال : #4
 
انشالله که موفق باشید. ولی دوست عزیز به نظرم اگه همشو بکنی یه مقاله بزرگ و در سایت قسمت مقالات بگذاری بهتر نیست ؟ البته با اجازه آقا آلن که فکر نمیکنم مانع بشه.
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-11, 06:46 PM,
ارسال : #5
 
با سلام
خسته نباشی.واقعا که خوب بود .برای ترجمه از چه مرجعی استفاده می کنی؟ البته من خودم یک مرجع در قسمت لینوکس و برنامه نویسی ->قابل توجه QT کاران معرفی کردم.اونجا هم یه سر بزنی بد نیست.انشاءا.. که این کار رو ادامه بدید.حتما و حتما.در ضمن همان طور که shetahkteh گفنتد همه رو بصورت یک مقاله در بیاری بهتره. در غیر اینصورت تعداد پستها (در صورت ادامه کار) غیر قابل شمارش
می شه.
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-11, 07:24 PM,
ارسال : #6
 
دستتون درد نکنه و موفق باید.... بهتره که این مقالاتتون رو به ایران تاکس بدید تا در شماره های بعدی منتشر بشه... اینجوری همه هم می تونند به راحتی استفاده کنند.

[ltr]Debian ; for when you have better things to do than fix your system[/ltr]
[ltr]TuxForge :: A Gateway To The Opensource World[/ltr]
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-11, 09:52 PM,
ارسال : #7
 
با سلام
من مراحلی که شما گفتید رو انجام دادم ولی پیغام Unable to find a Qt configuration. رو می ده.البته qmake درسته
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-11, 11:15 PM,
ارسال : #8
 
خوب ببینین بچه ها من سورس رو کاملا کامپایلش و اجراش کردم
این خطایی رو که شما دارین منظورش این اینه مه QT درست پیکربندی نشده اگه می تونین دوباره نصبش کنین فکر کنم بهتر بشه

منظورتون از ایران تاکس چی هستش؟

سعی میکنم به صورت مقاله بنویسم چشم

البته به صورت PDF
ولی باز هم چند تا برنامه رو براتون اینجا آموزش می دم
درمورد کلمه نرم افزار بگم که منظورم نرم افزار برنامه نویسی هستش
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-11, 11:45 PM,
ارسال : #9
 
سلام درس دوم:

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

برای این منظور ما برای پنجرهای که می خواییم کلید رو نشون بده اندازه تعیین می کنیم در صورتی که اندازه ها رو به مقدار مشخص تعیین کنیم اندازه پنجره غیر قابل تغییر
خواهد بود.
کد زیر رو در نظربگیرین:
[ltr]
#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>
#include <qvbox.h>

int main( int argc, char **argv )
{
QApplication a( argc, argv );

QVBox box;
box.resize( 200, 120 );

QPushButton quit( "Quit", &box );
quit.setFont( QFont( "Times", 18, QFont::Bold ) );

QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );

a.setMainWidget( &box );
box.show();

return a.exec();
}
[/ltr]
همون برنامه قبلی هستش با جزئی تفاوت
این قسمت

[ltr]
QVBox box;
box.resize( 200, 120 );
[/ltr]
خط اول برای ایجاد یک پنجره به کار میره البته بگم که متغیری از نوع ساخت پنجره
و در خط دوم برنامه اندازه پنجره رو تعیین می کنیم

همونطور که در برنامه مشاهده می کنید برای کلیدی که تعریف میکنیم می تونیم فونت مناسبی رو هم بهش الحاق کنیم

[ltr]
quit.setFont( QFont( "Times", 18, QFont::Bold ) );

[/ltr]
و با دستور:

[ltr]
QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );

[/ltr]
کاری که کلید باید انجام بده و یا روش اعمال بشه رو تعیین می کنیم

قسمت SIGNAL(clicked()) برای نوع عمل و SLOT(quit()) اجرای دستور به کار میره
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-11, 11:59 PM,
ارسال : #10
 
ببخشید که نتونستم خط ها رو چپ چین کنم در مورد تعداد تاپیک هم بگم که منظور من این نیست که سایت رو پر کنم اگه منظورم این بود سایت خودم رو پر کرده باشم شاهکار کردم
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-12, 03:53 AM,
ارسال : #11
 
ommolbanin نویسنده :خوب ببینین بچه ها من سورس رو کاملا کامپایلش و اجراش کردم
این خطایی رو که شما دارین منظورش این اینه مه QT درست پیکربندی نشده اگه می تونین دوباره نصبش کنین فکر کنم بهتر بشه

منظورتون از ایران تاکس چی هستش؟

سعی میکنم به صورت مقاله بنویسم چشم

البته به صورت PDF
ولی باز هم چند تا برنامه رو براتون اینجا آموزش می دم
درمورد کلمه نرم افزار بگم که منظورم نرم افزار برنامه نویسی هستش

ایران تاکس یه مجله الکترونیکی لینوکس هست که هر ماه درباره چند برنامه در شماره های متعدد مقالاتی برای شناخت کار و برنامه نویسی و اشنایی با قسمتهای مختلف گنو/لینوکس رو ارایه میده به نظر من pdf در نیار همون حالت html و مقاله معمولی باشه بدی به این سایت یا ایران تاکس چون کارت تک هست خیلی ها میخونن و در شماره های متعدد مثلا شماره ۱ یه چیزی رو توضیح بده شماره ۲ یه چیز دیگه یا اگه از مقاله ای گه ۱۰۰٪ داری اونو ترجمه میکنی بهترین کاره.و کار جالب دیگه اینکه سوالاتی که در اینجا پرسیده میشه رو در اخر مقالاتت اضافه کنی و جوابشونو بگزاری تا همه استفاده کنند.
سایت irantux

<!-- w --><a class="postlink" href="http://www.irantux.com/html/index.php">www.irantux.com/html/index.php</a><!-- w -->
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-12, 01:05 PM,
ارسال : #12
 
چشم به نظر شما چطور میتونم باهاش همکاری کنم چون من هم مثل بقیه مدرکی چیزی ندارم که بگم آقا من مدرک فلان چیز رو دارم من هم مثل شما علاقمند به برنامه نویسی هستم و در همینطور در حال یادگیری .

چون علاقه من به برنامه نویسی زیاده و مرجعی مناسب و فارسی وجود نداره و چون یه کم باهاش سروکار داشتم و فکر می کردم می تونم کمکی بکنم این کار شروع کردم که البته بدون لطف بچه ها امکان پذیر نیست.

هدف دیگه ی من این بود که روحیه بچه در برنامه نویسی بالا بره و بتونیم یک تیم نرم افزار تشکیل بدیم

به نظر شما چطور میشه با مجله ایران تاکس همکاری کرد لازم که ایمیل بزنم یا مقال بفرستم و یا چیزه دیگه
شما راهنماییمون کنیم ممنون میشم
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-12, 01:33 PM,
ارسال : #13
 
سلام
مجله ایران تاکس از عده‌ای بچه‌های پرکار و مستعد تشکیل شده و هیچ شرایط خاصی هم برای همکاری نداره. مطالبتون رو بفرستین آقای درویش و بقیه دوستان مطمئنا استقبال می‌کنن.

[ltr] Home: Arch Linux, AMD X2 4600, 2 GB, 250 GB, [/ltr]
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-12, 11:34 PM,
ارسال : #14
 
navidjoon نویسنده :سلام
مجله ایران تاکس از عده‌ای بچه‌های پرکار و مستعد تشکیل شده و هیچ شرایط خاصی هم برای همکاری نداره. مطالبتون رو بفرستین آقای درویش و بقیه دوستان مطمئنا استقبال می‌کنن.
کسی نمی خواد از این آموزشها تو این سایت استفاده کنه ؟

نظرتون در باره ادامه این بحث و آموزش چی هست ؟
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-12, 11:38 PM,
ارسال : #15
 
البته من چند ساعت از وقتم رو برای آموزش و ترجمه کنار گذاشتم و مقاله ها رو به صورت PDF دارم درست می کنم
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-13, 12:44 AM,
ارسال : #16
 
سلام
من نگفتم که مطالبتون توی سایت رو ادامه ندین فقط مطلب این بود که ایران‌تاکس به عنوان محل تخصصی برای انتشار مطالب و مقالات مشخص شده و شما می‌تونید مطالبتون رو براش ارسال کنید وگرنه این مطلب منافاتی با ادامه آموزشهاتون در اینجا نداره و ما خوشحال هم میشیم که اینطور باشه.

[ltr] Home: Arch Linux, AMD X2 4600, 2 GB, 250 GB, [/ltr]
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-13, 09:11 AM,
ارسال : #17
 
navidjoon نویسنده :سلام
من نگفتم که مطالبتون توی سایت رو ادامه ندین فقط مطلب این بود که ایران‌تاکس به عنوان محل تخصصی برای انتشار مطالب و مقالات مشخص شده و شما می‌تونید مطالبتون رو براش ارسال کنید وگرنه این مطلب منافاتی با ادامه آموزشهاتون در اینجا نداره و ما خوشحال هم میشیم که اینطور باشه.


چشم اون کار رو هم می کنم
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-13, 09:49 AM,
ارسال : #18
 
خواهشا مطالبتون رو نیمه تمام نذارین .حالا چه تو این سایت یا سایت دیگه .من تازه دارم QT رو نصب می کنم.
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-13, 08:14 PM,
ارسال : #19
 
چشم

دارم درس سوم رو براتون آماده می کنم نگران نباشین و همینطور دارم دارم درسها رو به صورت PDF همراه با عکس براتون طراحی و آماده می کنم.
از اینکه علاقمندانی برای برنامه نویسی اینجا میان مایه دلگرمی من میشه.
ممنون
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2005-05-13, 10:52 PM,
ارسال : #20
 
آموزش برنامه نویسی قسمت سوم

در سیستم عاملهای همچون Windows-Linux-Mac و یا غیره با انواعی مختلفی از Slide آشنا هستید.
حال می خواهیم برنامه ای بنویسیم که با غلتاندن و جابجایی Slider و اعدادی (را با خاصیت نمایشی Lcd )را با نمایش تغییر وضعیت آن طراحی کنیم .
در این برنامه برای اولین بار می خواهیم از کلاس که خودمان طراحی می کنیم استفاده کنیم .
توجه: با خاطر داشته باشید که از کلاسها برای برنامه نویسی به صورت شیء گرا استفاده می شود. دراین سبک برنامه نویس به جای توابع و متغیرها فقط به اشیایی دسترسی دراد که خود اشیاء شامل توابع و متغیر های برنامه می باشد که کنترل و اجرای آنها یا بعهده شیء بوده یا استفاده از آنها زیر نظارت خواهد بود. در نتیجه برنامه نویس در هنگام نوشتن شیء کافی است که دقت به عمل بیاورد نه در هنگام استفاده از آن و همچنین کافی است طریقه استفاده از شیء را بداند نه تک تک توابع آن را. چون در این سبک با استفاده از کپسوله کردن به جز راه های معدود و کنترل شده که قبلا برای شیء تعریف شده راه دیگری برای دستکاری اعضای یک شیء وجود ندارد ، به این ترتیب شیء از گزند اشتباهات و اختلافات دیگر اشیاء مصون خواهد ماند .
[ltr]
#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
#include <qfont.h>
#include <qvbox.h>



class MyWidget : public QVBox
{
public:
MyWidget( QWidget *parent=0, const char *name=0 );
};

MyWidget::MyWidget( QWidget *parent, const char *name )
: QVBox( parent, name )
{
QPushButton *quit = new QPushButton( "Quit", this, "quit" );
quit->setFont( QFont( "Times", 18, QFont::Bold ) );

connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );

QLCDNumber *lcd = new QLCDNumber( 2, this, "lcd" );

QSlider * slider = new QSlider( Horizontal, this, "slider" );
slider->setRange( 0, 99 );
slider->setValue( 0 );

connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );
}

int main( int argc, char **argv )
{
QApplication a( argc, argv );

MyWidget w;
a.setMainWidget( &w );
w.show();
return a.exec();
}
[/ltr]
حال خود ما کلاسی با نام MyWidget را تعریف می کنیم و خود تابع را نیز در داخل همان کلاس تایپ می کنیم که شامل دو آرگومان می باشد که از تابع اصلی و یا فرعی قابل استفاده می باشد .
خود برنامه تفاوت چندانی با برنامه های قبلی ندارد به جز موارد زیر :
کلمه کلیدی Public باعث می شود همه اعضای کلاس که بعد از آن آمده به صورت عمومی تعریف شود که در این مثال هم Qvbox و MyWidget به صورت عمومی تعریف شده اند
توجه داشته باشید که در این برنامه ما ازکلمه کلیدی New استفاده کرده ایم . از این تابع برای اختصاص حافظه به کار می رود ، اگر از این تابع استفاده کنید باید متغیر را همرا با اشاره گر تعریف کنید یعنی * نه مرجع & و برای نسبت دادن نوعی برای متغیر از کاراکترهای -> استفاده کنید ، این کاراکتر ها مخصوص زبان C++ می باشد که به صورت لیست پیوندی تعریف می شود .
کلمه کلیدی Horizontal در تعریف Slider برای درازا قرا دادن آن بکار می رود.


همانطور که مشاهده می نمایید ما کلاس خود را قبل از تابع Main نوشته ایم که باعث خوانایی بیشتر برنامه شده است و تنها در تابع اصلی به فراخوانی آن اکتفا کرده ایم و در دستورات زیر:
slider->setRange( 0, 99 );
slider->setValue( 0 );
ابتدا برای Slider محدوده ای دلخواه را تعیین می کنیم و با استفاده از دستور بعدی مقدار پیش فرض یعنی صفر را انتخاب می کنیم.
و همچنین در دستور :
connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );
برای Slider تغییر مقدارعددی همراه با نمایش عددی که به متغیر Lcd نسبت داده شده است را به هم متصل می کنیم تا هنگام تغییر وضعیت Slider عددی که به صورت Lcd طراحی شده است را نمایش دهد
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ


رفتن به انجمن :


کاربران در حال مشاهده موضوع : 1 مهمان