C++ GUI Programming

C++ GUI Programming

نوشتهاز rosenth » پنج شنبه اسفند 8, 87 5:18 pm

سلام
اسم این تاپیک قبلا C++ GUI Programming with Qt بود. ولی به خاطر محدود نشدن و وجود تعداد کیت های متنوع برای این زبان، اسمش رو عوض کردم. سعی میکنیم همیشه اطلاعات کاملتری رو اینجا بگذاریم.

اولین تولکیتی که معمولا برنامه نویسان ،اول ،به سراغ اون میرن Qt هست: به خاطر وجود مستندات زیاد و طرفداران زیادی که داره.
برای شروع لازمه با مفهوم شی گرایی آشنا باشید. اگر نیستید در همین تاپیک در خدمتتون هستیم.

پیش نیاز ها برای Qt :
یک ebook مرجع‌ آموزشی برای Qt میتونه این باشه: Prentice.Hall.C.plus.plus.GUI.Programming.with.Qt.4.2nd.Edition.Feb.2008
خود برنامه Qt رو از اینجا دانلود کنید http://www.qtsoftware.com/downloads
یک IDE که بعد از خرید Qt توسط NOKIA ساخته شد Qt Creator هست و محیط جذابی داره. از KDevelop هم میتوانید استفاده کنید.
بهتره Part1 : Chapter1 و Part1: Chapter2 از کتاب بالا رو کامل بخونید. برای پیشرفت بهتر، آموزش رو از طریق انجام مثال های qtdemo که با qt نصب میشه انجام بدین.
تازه ترین ویرایش از rosenth در دو شنبه اسفند 19, 87 1:59 pm, 3 بار ویرایش شده است .
rosenth

 
نوشته: 132
پیوستن: سه شنبه دی 3, 87 10:50 am
شهر: اهواز
Given: 15 thanks
Received: 57 thanks

The following user would like to thank rosenth for his or her post:
totia

Re: C++ GUI Programming with Qt

نوشتهاز moslem.b » پنج شنبه اسفند 8, 87 6:20 pm

یه سوال خیلی آماتوری ( نخندین )

Qt چیه ؟
ctrl+c
moslem.b

 
نوشته: 362
پیوستن: چهار شنبه دی 4, 87 4:51 pm
شهر: اهواز
Given: 100 thanks
Received: 108 thanks

Re: C++ GUI Programming with Qt

نوشتهاز narcissus » پنج شنبه اسفند 8, 87 6:56 pm

moslem.b نوشته است:یه سوال خیلی آماتوری ( نخندین )

Qt چیه ؟


http://forum.ubuntu.ir/index.php/topic,6765.0.html
first they ignore you
then they laugh at you
then they fight you
then you win
narcissus

 
نوشته: 224
پیوستن: شنبه دی 7, 87 3:33 pm
شهر: دزفول
Given: 25 thanks
Received: 69 thanks

The following 2 users would like to thank narcissus for his or her post:
moslem.b, totia

Re: C++ GUI Programming with Qt

نوشتهاز rosenth » پنج شنبه اسفند 8, 87 7:43 pm

* چرا از یک GUI-TOOLKIT استفاده کنیم؟

یکی از مشکلات هر toolkit سرعت آن است -- چون kit ها همیشه پوششی (wrapper)بر روی API های محلی هستند از برنامه هایی که از API های محلی استفاده میکنند کندترند. بسته به سیستم عامل و kitی که استفاده میکنید ممکن است پی به تفاوت سرعت ببرید.
مهمترین نکته مثبت kit های gui استقلال آن از پلتفرم است. بعضی kitها تنها عناصر GUI ارایه نمیکنند، بلکه پوششی بر روی تقریبا هر نوع فراخوانی سیستمی -- سوکت ها THREAD ها.... هستند یعنی با بعضی kit ها بدون حتی یک خط کد وابسته به پلتفرم میتوانید برنامه های پیچیده بسازید ، ولی با عیب پوشش توابع محلی (سریعتر ).
دلیل دیگر اینکه چرا کسی ممکن است بخواهد از kit GUI استفاده کند توابع api آنهاست. بعضی kit ها API های خیلی خوش ساخت ارایه میکنند که نتیجه یک طراحی ساختیافته است. اغلب استفاده از kitها بهتر از برای مثال API های محلی windows هستند.

* kit های زبان C

GTK+
GTK+ یک kit C است که ابتدا برای ساخت ابزار ویرایش تصویر GIMP توسعه داده شد. در این حین توسط برنامه های زیادی استفاده شده است، برجسته ترین مثال میتواند gnome framework باشد.
تقریبا تنها kit C موجود است، وپوششهایی برای استفاده از تقریبا هر زبانهای اسکریپتی مهم تحت UNIX در GTK دارد (مثلا PyGTK و PHP-GTK ).پوشش یا Language Binding ها به GTK+ اجازه میدهند تا از طریق زبان های برنامه نویسی دیگر استفاده شوند.
MOTIF
kit موتیف از برنامه های تجاری قدیمی تر شناخته شده است. برای بسیار افراد ظاهر موتیف شبیه X11/UNIX است. تنها دلیل اشاره به موتیق در اینجا تاریخچه آن است. به خاطر طبیعت تجاری، موتیف رو به توقف نهاد -- وقتی ادم های ساده ای تصمیم گرفتند آن را به صورت اپن سورس منتشر کنند.
توابع API موتیف سخت تر از WIN32 C-API قابل تجربه هستند. برنامه های جدید را با موتیف شروع نکنید.در برنامه های قدیمی تر با آن کار کنید،GTK بهتر خواهد بود. اگر قسمتی از پروژه را با موتیف بردارید بهتر است فکر ارتکاب به خودکشی کنید.
LessTIF
لستیف سعی کرد سازگاری سورس با موتیف داشته باشد.در مقابل با موتیف لستیف تحت LGPL لایسنس دارد.

*کیت های C++

QT
Qt یک kit C++از Trolletch است. تحت ویندوز UNIX/X11 MAC , و لینوکس(EMBEDED) موجود است.
Qt ، اسکین ها و THEME هایی ارایه میکند، همراه با چند تم پیشفرض جهت ظاهر و احساسِ داشتن تحت ویندوز و مک و یونیکس (MOTIF) می آید... : اگر میخواهید برنامه ای برای تمام این سیستم عامل ها بسازید و نیاز دارید برنامه را با ظاهرو احساس محلی ارایه کنید، QT تقریبا بهترین انتخاب برای شماست، به نظر من QT درحال حاضر kitی با بهترین API موجود است.
چیز خوشایند دیگر کپسوله سازی سوکت ها و THREAD ها و دسترسی SQL DBMS ... است، که امکان میدهد به طور کامل مستقل از OS کار کرد-- تا جایی که میتوانید در اتلاف PERFORMANCE بکوشید. اگر میخواهید یک برنامه WIN23 را به QT پورت کنید چندین لایه سازگاری برای کمک به شما وجود دارند.
FOX
فوکس یک kit رایگان C++ است،تحت LGPL است مثلا شما میتوانید آنرا با برنامه های CLOSED SOURCE لینک بدهید. برای UNIX/X11 و WINDOWS موجود است، در ویندوز همه مهمترین کامپایلرها پشتیبانی میشوند.
ظاهر و احساسش بسیار شبیه آنهایی است که از ویندوز شناخته شده اند، که آنرا انتخابی عالی برای توسعه CROSS PLATFORM میسازد. از سوی دیگر، کاربران HARDCORE یونیکس ممکن است ظاهر و احساس انرا زیاد دوست نداشته باشند. به نظر من API های QT واضح ترند. برای اپن سورس و بدون قصد ترک UNIX پیشنهاد میکنم از QT استفاده کنیدو برای OPEN SOURCE CROSSPLATFORM از FOX ، برای توسعه تجاری ممکن است استفاده از FOX برای نپرداختن حق لایسنس اغواکننده باشد -- باید درمورد آن دوباره فکر کنید.
GTKmm
یک پوشش C++ بر GTK است .در اصل GTK-- است ولی به دلیل مسایلی در مورد موتورهای جستجو نام آن تغییر یافت. Qt قبل از آنکه استاندارد های C++ وضع شوند شروع به توسعه کرد ، این یعنی بر اساس ساختارهای خود C++ را پیاده سازی میکند. ولی GTKmm از C++ استاندارد استفاده میکند.
FLTK
که FULL TICK خوانده میشود مخفف FAST LIGHT TOOLKIT است. FLTK یک GUI برای X,MAC OS, و WINDOWS است. این امکان را میدهد که GUI هایی بنویسیم که ظاهر تقریبا یکسانی مستقل از پلتفرمی که روی آن اجرا میشود داشته باشد. FLTK از گرافیک OPENGL پشتیبانی میکند.
wxWidget
این kit همراه با Qt پرطرفدارترین کیت ها هستند. تفاوت ها:
# Qt تنها در mac و KDE از ویجت های محلی استفاده میکند و در محیط های دیگر آنها را Emulate میکند ولی wxWidget در تمام OS ها از ویجت های محلی استفاده میکند پس در آنها کمی سریعتر است
# در نسخه اپن سورس Qt نمیتوانید نرم افزار تجاری/غیر آزاد بسازید .برای اینکار باید نسخه تجاری آن را بخرید. در مورد wxWidget این محدودیت وجود ندارد
# کتابخانه های Qt بسیار وسیع تر هستند و ارتباط Messege ها (همان Signal -Slot) در Qt خوش ساخت تر هستند
# گفته میشود کدهای wxWidget بیشتر از Qt به C++ شبیه هستند
# ساخت پنجره ها در Qt با Qt designer راحت تر است. wxWidget نیز برای اینکار ابزارهایی دارد.


دیگر kitها : Athena, 3d Athena toolkit, xforms , OpenGL,Xlib وXt
Last edited by rosenth on دو شنبه اسفند 12, 87 5:57 pm, edited 1 time in total.
rosenth

 
نوشته: 132
پیوستن: سه شنبه دی 3, 87 10:50 am
شهر: اهواز
Given: 15 thanks
Received: 57 thanks

Re: C++ GUI Programming with Qt

نوشتهاز rosenth » آدینه اسفند 9, 87 12:22 pm

حالا که مزیت ها و معایب Qt رو دیدین، لطفا فقط واسه سوال و جواب نیاین. اینو هم بگین هستین یا نه
rosenth

 
نوشته: 132
پیوستن: سه شنبه دی 3, 87 10:50 am
شهر: اهواز
Given: 15 thanks
Received: 57 thanks

Re: C++ GUI Programming with Qt

نوشتهاز moslem.b » آدینه اسفند 9, 87 5:47 pm

اول اینکه من که هیچی ازش بلد نیستم هیچ کسی هم نیست یادم بده با همتون قهرم :)

دوم اینکه با جستجوهایی که من کردم خیلی ها مخالف Qt هستن ( بخاطر تجاری بودنش) و میگن سعی کنید wxWidget رو یاد بگیرید که کاملا متن بازه !

سوم اینکه فکر کنم من برم همون بچسبم به اسکریپت و پایتون خودم بهتره ولی واسه روحیه دادن و تشویق کردن پایم :lol:
ctrl+c
moslem.b

 
نوشته: 362
پیوستن: چهار شنبه دی 4, 87 4:51 pm
شهر: اهواز
Given: 100 thanks
Received: 108 thanks

Re: C++ GUI Programming with Qt

نوشتهاز rosenth » آدینه اسفند 9, 87 7:34 pm

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

 
نوشته: 132
پیوستن: سه شنبه دی 3, 87 10:50 am
شهر: اهواز
Given: 15 thanks
Received: 57 thanks

Re: C++ GUI Programming with Qt

نوشتهاز rosenth » آدینه اسفند 9, 87 8:25 pm

متاسفانه قضاوت درباره این دو کیت با سرچ ،قضاوت درستی نخواهد بود. شما مطلب افراد زیادی رو دیدین که حامی wxWidget هستند ولی به همون اندازه هم هستند کسانی که میگن:
کد: گزینش همه
I used GTK+ when I started GUI development on Linux and my first contact with KDE was the python bindings. I liked the look and after some investigation made the switch to c++ and QT shortly after. I have not looked back, I love QT and how fast development is using the toolkit. This is the start of the end for gnome, QT is just far superior to GTK+, no doubt. I have said for a number of years, if QT ever goes LGPL then KDE will win on the desktop.

Of course I could have been saying the wrong thing for years but I love this move by Nokia.

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

 
نوشته: 132
پیوستن: سه شنبه دی 3, 87 10:50 am
شهر: اهواز
Given: 15 thanks
Received: 57 thanks

Re: C++ GUI Programming with Qt

نوشتهاز NabiKAZ » شنبه اسفند 10, 87 6:13 am

سخته! [سوت]
NabiKAZ
مسئول وب‌سایت
 
نوشته: 166
پیوستن: شنبه دی 7, 87 8:26 am
شهر: اهواز
Given: 114 thanks
Received: 84 thanks

Re: C++ GUI Programming with Qt

نوشتهاز moslem.b » شنبه اسفند 10, 87 8:11 am

rosenth نوشته است:Qt فقط وقتی تجاری میشه که شما بخواین تجاری کار کنید. با این حال تعصبی روش ندارم. هر دوشون اپن سورس هستند.
مسلم، یه تاپیک باز کن و اسمشو بزار python


واسه python باید تایپیک کلاس آموزش اسکریپت رو به یه جایی برسونم بعد شروع میکنم همزمان با اینکه میخونم و یاد میگیرم توی تایپیکش هم پیش میرم

در مورد Qt هم بهر حال شما واردترین من اعتراضی ندارم فقط خواستم یکمی اطلاعاتم بیشتر شه :)
ctrl+c
moslem.b

 
نوشته: 362
پیوستن: چهار شنبه دی 4, 87 4:51 pm
شهر: اهواز
Given: 100 thanks
Received: 108 thanks

پس

برگشت به گروه های برنامه نویسی

اکنون هست

;کسانی که اکنون در این تالار هستند: کاربری نام ننوشته است کاربر و 1 میهمان

cron