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

## amir_saniyan

سلام

من یک سوال دارم:

اگه بخواهیم کلا مستقل از سکو برنامه بنویسیم، به نظر شما کدوم بهتره؟ GTK یا wxWidgets یا QT (یا شاید چیز دیگه)؟

البته اگه می‌شه سخت بودن Library رو  در جواب‌هاتون در نظر نگیرید. به هر حال مثلا کسی که یک C کار هست GTK براش مشکل نداره. منظورم اینه که مثلا نگید GTK بده چون کار با C زجر آوره. آینده کدوم بهتره؟ چون همشون تقریبا یک هدف رو دنبال می‌کنند (مستقل از سکو). خیلی از پروژه‌های حتی بزرگ وسط راه دیگه ادامه داده نشدند (مثلا NDOC). کدوم رو الان انتخاب کنیم در آینده هم با موفقیت ادامه پیدا می‌کنه.

[فکر کنم یک کلاس انشا باید برم  :بامزه: ]

سپاس.

----------


## amir_saniyan

راستی، نظر خودم یادم رفت... :)

من فکر کنم GTK چون تا اونجایی که فهمیدم wxWidgets و QT و GNOME و کلی پروژه دیگه در لینوکس از GTK+ استفاده می‌کنند، حالا اگه GTK رو بی‌خیال بشند همه این پروژه‌ها هم ناکار می‌شند. ولی آخرش هم دقیقا نفهمیدم GTK+ تو ویندوز هم به *صورت کامل* پشتیبانی می‌شه یا نه؟

----------


## Nima_NF

> راستی، نظر خودم یادم رفت... :)
> 
> من فکر کنم GTK چون تا اونجایی که فهمیدم wxWidgets و QT و GNOME و کلی پروژه دیگه در لینوکس از GTK+ استفاده می‌کنند، حالا اگه GTK رو بی‌خیال بشند همه این پروژه‌ها هم ناکار می‌شند.


خیر این طور نیست، Qt در لینوکس  وابسته به کتابخانه های دیگر نیست و مستقیم از Xlib استفاده می کند.
wxWidgets هم به شما اجازه می دهد به طور مستقیم با X11 بدون وابستگی به سایر کتابخانه ها برنامه بنویسید و یا در صورت تمایل با انتخاب لایه زیرین Motif و یا +GTK برای لینوکس برنامه بنویسید.

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

----------


## sang9111

حرف آقا نیما کاملا صحیح است  qt در برنامه های تجاری یه لاینست گران داره که  برای کارهای کوچیک نمی صرفه  ولی   در متن باز  بینظیره  ....   مهمترین برتری  qt  منسجم  بودن کتابخانه هاش  است  و کلا   امکاناتش  بیشتر است  ولی  سخت  تر هم  است  بخصوص از  wxWidget    و کلا به  زبان  عامیانه تر با پدر مادر  تر است  سرعت  توسعه اش  هم  زیاد  است  و کتابخانه های زیادی بهش  اضافه می شه

----------


## amir_saniyan

> خیر این طور نیست، Qt در لینوکس وابسته به کتابخانه های دیگر نیست و مستقیم از Xlib استفاده می کند.


این لینوکس چقدر کتابخونه داره؟؟؟؟؟؟  :گیج: 
Xlib چیه دیگه؟؟؟؟؟ :خیلی عصبانی:  بدرد بخور هست؟

----------


## man4toman

سلام
برای توضیحات Xlib :
http://en.wikipedia.org/wiki/Xlib
http://tronche.com/gui/x/xlib/

----------


## Nima_NF

Xlib یا همان رابط سطح پایین پروتکل X Window System به شما اجازه می دهد که کارهای اصلی سیستم عامل یونیکس مانند کار با پنجره ها ، کیبرد و موس و کارهای گرافیکی و... را  انجام دهید ولی از آنجا که سطح پایین می باشد و همه امکانات گرافیکی توسط آن پیاده سازی نشده است شما باید از یکی از کتابخانه هایی که ذکر کردید استفاده کنید، که Qt و +GTK  به طور مستقیم از آن برای پیاده سازی خود استفاده می کنند لذا وابسته به کتابخانه دیگری نیستند، شکل زیر این موضوع را نشان می دهد:
X-client-libraries.JPG


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

----------


## ahmad598

با توجه با اینکه شما گفته بودید مستقل از سکو (cross platform) به نظرتون جاوا از همه بهتر نیست؟ هم آینده داره چون پشتیبانش سانه و هم اینکه الان به طور گسترده ای استفاده می شه. البته نمی دونم، شاید جاوا هم از همین چیزها استفاده کنه. اگه کسی اطلاعاتی داره بگه ممنون میشم. می دونم که می تونه از QT استفاده کنه، ولی به خودی خود فکر نمی کنم.

----------


## sang9111

> با توجه با اینکه شما گفته بودید مستقل از سکو (cross platform) به نظرتون جاوا از همه بهتر نیست؟ هم آینده داره چون پشتیبانش سانه و هم اینکه الان به طور گسترده ای استفاده می شه. البته نمی دونم، شاید جاوا هم از همین چیزها استفاده کنه. اگه کسی اطلاعاتی داره بگه ممنون میشم. می دونم که می تونه از QT استفاده کنه، ولی به خودی خود فکر نمی کنم.


کلا فلسفه و نحوه کار جاوا با این کتابخانه ها متفاوت است  جاوا از یک ماشین مجازی استفاده می کنه به خاطر همین شما فقط یک بار برنامه رو کامپایل می کنید و در همه سیستم ها اجرا میشه ولی در این ابزار ها  شما فقط کد رو عوض نمی کنید (البته بعضی موارد باید یه تغییراتی داد) ولی باید در هر محیطی جداگانه کامپایل بشه  
و البته جاوا ضعف هایی هم در برابر  این ابزار ها داره که زیاد ضعف حساب نمیشه 
مثلا یک شرکت می خواد یک ابزار مهندسی با گرافیک 3 بعدی و محاسبات پیچیده بنویسه که روی قریب به اتفاق سیستم عامی ها با کمترین تغییر اجرا بشه  اون موقع دیگه نمیشه از جاوا استفاده کرد چون کند  و  در پروسز های بزرگ کند عمل می کنه (نمونش matlab)
در نتیجه میای و از این ابزار ها استفاده می کنه حالشم میبری :لبخند گشاده!:

----------


## Bayazee

البته حتما در جریان هستید که کیوت یا Qt نسخه آزاد هم داره . و هم برای کارای تجاری و هم آزاد و اپن سورس مناسب هست . نسب به بقیه ظاهرا برتری های خوبی داره .

----------


## کامبیز اسدزاده

در حال حاظر با سرعتی که در پیشرفت Qt میشه دید انتخاب آن خیلی بهتره چون برای کار با طراحی و تولید GUI مورد نظرتون خیلی بهتر از wxWidgets جواب میده.
درضمن کیوت نسخه آزاد هم داره و در همه پروژه های کوچکو بزرگ میشه ازش استفاده کرد تنها در صورت کامپایل Static شما نیاز به خرید لیسانس آن دارید دی غیر اینصورت غیرقانونی است.

و درضمن به یه نکته هم اشاره کنم در کنار اینها استفاده از کتابخانه های Boost و wxWidgets امکان پذیر هست یعنی محدودیتی در استفاده انواع کتابخانه ها هنگام انتخاب وجود ندارد.

----------

