# Native Code > برنامه نویسی با C > برنامه نویسی در محیط QT و هم خانواده هایش >  آموزش راه اندازی Qt در ویندوز (اجرای اولین برنامه)

## Nima_NF

با توجه به اینکه کار با Qt برای شروع  کمی سخت هست ، نحوه راه اندازی آن را در ویندوز توضیح می دهم:

1) ابتدا پک نصب  Qt را از سایت آن دریافت کنید.(حتما نوع  .exe آن را دریافت کنید تا دردسر تنظیمات نداشته باشید)
http://trolltech.com/developer/downloads/qt/windows

2) *نصب :* شما برای کار با نسخه Qt open source نیاز به کامپایلر minGW دارید که یا باید آن را جداگانه دانلود کنید و یا هنگام نصب پک Qt ، با زدن تیک مورد نظر ، آن را به صورت مستقیم از اینترنت دریافت و نصب کنید. در هر حال ابتدا باید کامپایلر را جداگانه از سایت آن دریافت و نصب کنید ، بعد به سراغ نصب Qt بروید تا به مشکل تنظیمات بر نخورید.
بهترین مکان نصب همان C:\Qt\4.x.x می باشد که فولدری با نام بدون فاصله خالی و قابل دسترسی سریع می باشد.

*تذکر مهم:* نسخه open source Qt را نمی توانید با visual studio کامپایل کنید و یا به عبارت دیگر ابزار های Qt را نمی توانید داخل  visual studio استفاده کنید (Integrate) و برای این کار باید نسخه تجاری آن را خریداری کنید. پس کامپایل آن از طریق command prompt می باشد ، هر چند که روش هایی وجود دارد که با IDE این کار انجام شود ، ولی بسیار زمانبر است و ضمنا همه مراحل نیز اتومات نمی شود.

حالا Qt باید به درستی نصب شده باشد.

--------------------------------------------------------------------
* اجرای ساده ترین برنامه:*
ابتدا در درایو C ، فولدری با نام hello بسازید و سپس در داخل آن فایلی با نام و پسوند hello.cpp ساخته و کد های زیر را در آن کپی کنید:

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel *label = new QLabel("Hello Qt!");
    label->show();
    return app.exec();
}
برای کامپایل از منوی استارت به بخش programs  و منوی نصب شده Qt  بروید و از آنجا Qt 4.3.3 Command Prompt را اجرا کنید. 

*تذکر مهم:* این Command Prompt دارای تنضیمات اولیه برای کامپایل می باشد که با Command Prompt اصلی ویندوز فرق می کند. 

 پس از اجرای آن ، مراحل زیر را انجام دهید:
1)  به فولدر C:\hello\  بروید و برای ساخت فایل .pro  تایپ کنید : qmake –project

C:\hello\qmake -project 
*تذکر:* در صورت خطا  در این مرحله یا اشتباها به Command Prompt ویندوز وارد شده اید و یا Qt درست نصب نشده است ، برای رفع حالت دوم تذکرات پست بعدی (انتهای آموزش) را مطالعه کنید.

2) برای ساخت فایل Makefile نیز تایپ کنید: qmake

C:\hello\qmake
3) برای کامپایل از طریق کامپایلر minGW نیز تایپ کنید : make

C:\hello\make
*تذکر:* در صورتی که در مرحله 3 با خطا رو برو شدید ، احتمالا کتابخانه های مخصوص debug برای Qt کامپایل نشده است و باید این کار را از منوی استارت و بخش نصب Qt و سپس (Qt 4.3.3 (Build Debug Libraries  انجام دهید که بیش از 10 دقیقه طول خواهد کشید.

لذا برای سرعت عمل ، برنامه را فقط release کنید (بدون debug آن) ، پس به جای کد فوق بنویسید:  make release

C:\hello\make release
موفق باشید

----------


## Nima_NF

*تذکر :*مراحل زیر در موردی استفاده می شود که مراحل ذکر شده فوق ، درست عمل نمی کنند و یا شما پک zip شده Qt را دریافت کرده اید و می خواهید خودتان تنظیمات را انجام دهید.

1) مسیر c:\Qt\4.3.3\bin را به متغیر PATH در قسمت زیر در ویندوزاضافه کنید:
Control Panel->System->Advanced->Environment variables

Variable --> PATH
Value--> c:\Qt\4.3.3\bin
 2) برای تنظیمات اعمال زیر را می توانید انجام دهید: به command prompt ویندوز بروید و به درایو C بروید ، سپس به فولدر   \Qt\4.x.x بروید (x.x ورژن Qt شماست) و سپس تایپ کنید configure ، پس به صورت زیر:

C:
cd \Qt\4.3.3
C:\Qt\4.3.3\configure
موفق باشید

----------


## amir_saniyan

سلام
فرض کنید که ما می‌خواهیم همین برنامه رو برای مشتری‌هامون منتشر کنیم. خوب حالا چه DLL هایی رو باید برای اون نصب کنیم؟ (یکی از اون‌ها مطمنا mingwm10.dll است). بقیه رو از کجا می‌شه گیر آورد (یعنی فهرست DLL های لازم چیه)؟

----------


## man4toman

منظورتون DLL برای اجرای برنامه یی که با Qt مینویسیم؟

----------


## Nima_NF

وقتی از توابع و کلاس ها مختلف استفاده می کنید یک هدر فایل را نیز include می کنید که هم نام DLL هست در نتیجه همان Dll های مورد استفاده را باید کپی کنید و آن ها را می توانید از مسیر نصب شده Qt در فولدر bin بردارید:

C:\Qt\4.3.3\bin

ضمنا اگر تشخیص اینکه کدام DLL مورد نیاز هست کمی برایتان سخت است می توانید از برنامه Depends.exe که همراه Visual studio وجود دارد استفاده کنید.

----------


## amir_saniyan

سلام

خیلی ممنون از پاسخ‌هاتون.

بیشتر منظورم این بود که QT یک چیزی شبیه برنامه نصب Runtime داره یا نه؟ مثلا دات نت 2.0 یک فایل 20 مگابایتی برای نصب داره. در مورد GTK+ هم یک نفری پیدا شده و برنامه نصبی مخصوص ویندوزش رو نوشته (اینجا: http://gtk-win.sourceforge.net )، حتی MinGW هم یک پرونده فشرده Runtime داره. ولی برای QT چیزی من پیدا نکرده (منظورم چیزی که دیگه آدم خاطر جمع باشه وگرنه با سعی و خطا و حدس و گمان و بررسی‌های ابتدایی خودم، ممکنه مجموعه DLL هایی که جمع کرده باشم کامل نباشه و چون DLL ها تا زمانی که نیازی بهشون نیست بار نمی‌شوند ممکنه اصلا برنامه وسط کار خطا بده.) برای مشتری بدبخت هم که نمی‌شه کل QT رو نصب کرد (البته شاید هم بشه :) )

با این حال از صحبت‌های دوستان مشخصه که چنین چیزی وجود نداره و به نظر من این برای QT یک نقطه ضعفه.

سپاس

----------


## Nima_NF

> (منظورم چیزی که دیگه آدم خاطر جمع باشه وگرنه با سعی و خطا و حدس و گمان و بررسی‌های ابتدایی خودم، ممکنه مجموعه DLL هایی که جمع کرده باشم کامل نباشه و چون DLL ها تا زمانی که نیازی بهشون نیست بار نمی‌شوند ممکنه اصلا برنامه وسط کار خطا بده.) برای مشتری بدبخت هم که نمی‌شه کل QT رو نصب کرد (البته شاید هم بشه :) )
> 
> با این حال از صحبت‌های دوستان مشخصه که چنین چیزی وجود نداره و به نظر من این برای QT یک نقطه ضعفه.


کپی کردن چند عدد dll در کنار فایل اجرایی exe شما که نام آن ها مشخص و سر راست هم هست و شما هدر آن ها در برنامه اضافه کرده اید اصلا هیچ کاری ندارد که بخواهند برایش برنامه نصب مخصوص بسازند و یا آن را هم جز ضعف Qt بشماریم! 

کپی کردن Dll ها در کنار فایل اجرایی در سیستم مشتری نیاز به نصب هم ندارد و همین مورد کافیست.

ضمنا شما از هر نرم افزار ساخت install که استفاده کنید (installshield یا VS deployment و...) قادر به تشخیص dll های مورد نیاز هستند و آن ها را اعلام می کنند.

----------


## saeed_Z_F

سلام
من مثال شمارو انجام دادم وقتی release را اجرا کردم پیغامی مبنی بر پیدا نکردن چند تا از dll ها داد . سپس dll های لازم رو در کنار فایل اجرایی کپی کردم و سپس فایل اجرایی را اجرا کردم در این حالت برنامه بدون مشکل اجرا شد .
یک ابهام برای من وجود داره برای اجرای یک همچین برنامه ساده ای باید 12.4 MB فایل همراه برنامه باشد به نظر شما این performance را پایین نمیاره یا اینکه توزیع برنامه مشکل نمیشه .

سوال دیگه من اینه که اگه از MFC استفاده کنیم دیگه احتیاج به هیچ DLL اضافی وجود نداره ؟ یعنی اینکه این DLL ها همراه ویندوز نصب میشه ؟

----------


## Nima_NF

برای Qt دو نوع انتشار وجود دارد:
1-  یکی به صورت  Shared Libraries هست که شما dll ها را در کنار فایل اجرایی کپی می کنید، یعنی با توجه توابعی که استفاده می کنید dll آن را نیز باید کپی کنید و نیاز نیست همه dll ها کپی شوند.
این روش برخلاف تفکر شما مزایای خود را از جهت مصرف بهینه حافظه و performance دارد مخصوصا وقتی برنامه های دیگر تحت Qt در سیستم خود دارید، نرم افزارهای تجاری تقریبا در اکثر موارد از این روش استفاده می کنند.



> توزیع برنامه مشکل نمیشه .


حجم این dll ها قابل مقایسه با  NET Framework. نیست. اما در هر حال در ازای مزیت cross-platform بودن این حجم لازم است، چون Qt از کنترل های GUI خود سیستم عامل استفاده نمی کند، بلکه همه آن ها را طراحی کرده است تا در همه جا یکسان باشد. اگر دنبال حجم کمتر هستید باید به سراغ برنامه نویسی مستقیم API با آن سیستم عامل بروید که همه کارها بر عهده خودتان است.

2- روش دیگر Static Linking است که ابتدا باید کتابخانه های استاتیک را تولید کنید و سپس از آن ها استفاده کنید، به این شکل توابع مورد استفاده در داخل فایل اجرایی قرار می گیرند و نیازمند dll ها جداگانه نیستند.
برای این کار از این لینک می توانید استفاده کنید
نکته : البته نمی دانم در نسخه open source به شما اجازه static linking داده می شود یا خیر.

ضمنا شما dll های کامپایلر را نیز باید منتشر کنید.



> سوال دیگه من اینه که اگه از MFC استفاده کنیم دیگه احتیاج به هیچ DLL اضافی وجود نداره ؟ یعنی اینکه این DLL ها همراه ویندوز نصب میشه ؟


برای MFC هم شما این دو راه را در اختیار دارید، اما معایب روش استاتیک با توجه به تعداد زیاد نرم افزار های MFC زیاد هست به همین دلیل نیارمند نصب dll های آن هستید، 
در نسخه های قبلی در فولدر فایل اجرایی باید کپی می شدند و در نسخه های جدید باید در ویندوز نصب شوند (که به این شکل به ظاهر از دید پنهان می مانند) .

----------


## QTdesigner

برای این که بتونید Qt رو در C++‎ کامپایل کنید باید به سیستم عامل یک path بدهید برای این کار به طرق زیر عمل می کنیم این یکی از کار های خیلی مهم در نصب Qt در ویندوز است 


control panel->system->advance->environment variable

در قسمت user variables for administrator  یک variable اضافه کنید به نام Qmakespec به value بدهید win32-mcvc2008 (البته اگر از Microsoft visual studio استفاده می کنند)

یه variable دیگه درست کن اسمشو بزار QTDIR بعد آدرس محلی که QT رو در اون نسب کردی رو بده 

در قسمت system variable در شاخه ی path به آخر value اینو اضافه کن Qt\bin***; جای ستاره ها محل نصب Qt رو بده 
با این کار ها می تونید در C++‎ کد بزنید 

اگه مطالب به دردتون خورد برام دعا کنید

----------


## saeed_Z_F

سلام
نصب و راه اندازی نسخه های جدید qt خیلی آسون و ساده شده و به راحتی با چند تا کلیک انجام میشه.
خیلی عالی شده.

----------


## m-taheri

با سلام .

آیا میتونیم QT را روی 2008 VS نصب کنیم؟

----------


## حامد مصافی

> آیا میتونیم QT را روی 2008 VS نصب کنیم؟


بله qt-vs add-in را دانلود و نصب كنيد

----------


## Nima_NF

از آنجایی که طی ماه های گذشته بسته های نصب Qt عرضه شده و دیگر به سادگی قابل استفاده ونصب کردن هست، لذا این تاپیک را از حالت اعلان خارج می کنم.

----------


## m-taheri

> بله qt-vs add-in را دانلود و نصب كنيد


به نظر شما بهتره از  qt-vs add-in استفاده کنیم یا از qt-creator

----------


## حامد مصافی

> به نظر شما بهتره از  qt-vs add-in استفاده کنیم یا از qt-creator


تا جايي كه من ديدم qt vs add-in قادر نيست از تمام امكانات VS استفاده كند، به همين دليل چندان مطلوب كساني كه انتظاري در حد بالا از VS دارند نيست. اما در كل شما با استفاده از اين افزونه مي توانيد در محيطي كه بدان عادت داريد كد نويسي كنيد. كه البته امكاناتي مانند ديباگ مستقيم ابزار هاي تلفن همراه (در صورت برنامه نويسي براي موبايل ها) يا كمك سريع را از دست مي دهيد. در نهايت به نظر من فرقي ندارد و مي توانيد با هر كدام كه راحت تر هستيد كار كنيد. در خارج از دنياي مايكروسافت كسي به IDE عادت نمي كند. مهم استفاده از خود qt است. خود من هم از qt creator استفاده مي كنم، هر چند سال ها با VS برنامه نويسي كرده و مي كنم، و به آن عادت كرده ام.

----------


## eshpilen

منکه اصلا از محیط ویژوالش استفاده نمیکنم.
با خط فرمان کارم راه میفته.
البته شاید بعدا اینکار رو بکنم.
الان چون سیستمم ضعیفه اجرای چنین محیطی کلی از رمق سیستم رو میگیره.

----------


## shaaadi

برای استفاده از کتابخونه ی QT در لینوکس (ابونتو ۹.۱۰) چه پکیج هایی رو باید نصب کنم ؟

----------


## حامد مصافی

بهتره بسته نصب اتوماتيك رو از سايت نوكيا دانلود و نصب كنيد.

----------


## shaaadi

آخه من نمیدونم تو این سایت چی رو باید دانلود و نصب کنم ؟؟!!!

----------


## حامد مصافی

در صفحه باز شده Goto LGPL را كليك كرده و سكوي مورد نظر را انتخاب كنيد.
لينك مستقيم دانلود براي سكوي X11

----------


## shaaadi

خیلی خیلی ممنون از راهنماییتون ... ی سوال دیگه هم داشتم اینکه این خیلی حجمش زیاده ... راه دیگه ی هم هست که بشه از این این کتاب خونه استفاده کرد ؟
بعد اینکه من نرم افزار QT creator رو نصب کردم ... آیا این کتاب خونه ها هم تو این نرم افزار هست ؟

----------


## حامد مصافی

> خیلی خیلی ممنون از راهنماییتون ... ی سوال دیگه هم داشتم اینکه این خیلی حجمش زیاده ... راه دیگه ی هم هست که بشه از این این کتاب خونه استفاده کرد ؟


بالاخره بايد اين كتابخانه ها به طريقي به كامپيوتر شما برده شوند. دانلود، دريافت از دوست، استفاده از مخازن همراه (در توزيع هايي مانند دبيان) يا ...




> بعد اینکه من نرم افزار QT creator رو نصب کردم ... آیا این کتاب خونه ها هم تو این نرم افزار هست ؟


خير، اين فقط محيط توسعه است.

----------


## habel_star

سلام من میخواستم بدونم این qt چه استفاده های داره پیشاپش از راهنمیتون تشکر میکنم

----------


## حامد مصافی

همون استفاده اي كه ساير كتابخانه ها و تولكيت ها دارند. يعني ايجاد امكاناتي براي سهولت در برنامه نويسي. تولكيت مجموعه اي از كد هاي از پيش نوشته شده است كه روند توسعه نرم افزار را سريعتر از حالتي كه بدون آن برنامه بنويسيد، ممكن مي سازد.

----------

