PDA

View Full Version : سوال: Cross Plotform



razavi_university
دوشنبه 16 اردیبهشت 1387, 02:21 صبح
يك سوال در مورد Cross Plotform دارم ابزارهايي كه براي اينكار توسط جناب Nima_NF گفته شد
wxWidgets و Qt4 بودند.
مزايا و معايب و خصوصيات هر كدوم چيه ؟
براي كار با هريك به چه ابزارهايي نياز داريم؟

مي‌بخشيد كه چند سوال پرسيدم ولي قصدم اينه كه به عنوان راهنمايي براي خودم و ساير دوستان باشد

Nima_NF
دوشنبه 16 اردیبهشت 1387, 15:50 عصر
توجه داشته باشید که این دو مورد، دو تا از پرکاربردترین ها و محبوب ترین ها هستند و در لایه زیرین خود با توجه به تنظیمات شما می توانند از سایر tooklit ها نیز استفاده کنند.
از جمله سایر تولکیت ها : FLTK ،Tcl/Tk ، Gtk+

wxWidgets یک پروژه open source هست و به شما اجازه توسعه تجاری را نیز می دهد، هدف اصلی ارائه این تولکیت رفع نیاز شرکت ها برای نوشتن برنامه های cross-platform هست تا بتواند بدون صرف هزینه برای خرید تولکیت های تجاری نیاز های داخلی و ابزار های مورد نیاز خود را فورا نوشته و استفاده کنند، ضمن با توجه به وسعت کاربران آن برخلاف Qt اکثر کامپایلر های محبوب را پشتیبانی می کند.

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

در مورد کار با پایگاه داده از Qt ضعیف تر می باشد و بسیاری از موارد توسط third-party یا به قولی توسط سایر شرکت هایی که قابلیت هایی را برای wxWidgets ساخته اند امکانات ارائه می شود.
توسط بسیاری از کاربران آن مطرح می شود که کد های آن بی نظم تر و شلوغ تر از Qt می باشد و با بررسی هایی که خودم بر روی سورس کدهایش انجام دادم با نظر این افراد موافقم.
اما هرگز نباید فراموش کرد که این تولکیت رایگان هست و در عوض امکاناتش و در مقایسه با سایر تولکیت های موجود بسیار قابل قبول و قابل تحسین هست.

از جمله نرم افزارها: AOL communicator
لیست نرم افزارهای توسعه یافته توسط wxWidgets (http://www.wxwidgets.org/about/users.htm)

یک فلش جالب برای توضیح امکانات wxWidgets (http://www.wxwidgets.org/about/wxwidgets.swf)

جالب هست که بدانید در فیلم فوق، حجم کتابخانه های خودش را با Java ، Qt و +GTK مقایسه می کند.


Qt در چند نسخه عرضه می شود : تجاری ، آکادمیک و open source

در نسخه کد باز و رایگان متاسفانه برنامه شما باید تحت GPL عرضه شود ، لذا کدهای برنامه شما به صورت open source باید ارائه شود و بدتر اینکه در این نسخه رایگان شما نمی توانید از کامپایلرهای قدرتمند مانند ++VC در ویندوز و یا سایر کامپایلرهای IDE مورد پشتیبانی استفاده کنید و فقط به صورت command line کامپایل انجام می شود.
سورس کد همه کتابخانه ها نیز در نسخه رایگان ارائه نمی شود.

اما با خرید یکی از نسخه های تجاری، این امکان وجود خواهد داشت که برنامه را به صورت تجاری به فروش برسانید، از کامپایلرهای IDE استفاده کنید و حتی قابلیت ها و امکانات طراحی واسط کاربر را به کامپایلر خود اضافه کنید تا کارها بسیار راحت و به قول دوستان visual انجام شود. (نسخه تجاری در اندازه، قابلیت ها و با هزینه های متفاوتی عرضه می شود)
Qt Editions Comparison Chart (http://trolltech.com/products/qt/licenses/pricing/editions)

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

اگر در جایی از برنامه به bug برخورد کردید با ارائه آن فورا patch مربوطه برای رفع اشکال Qt را در اختیارتان قرار می دهند.
در یکی از بخش هایی پشتیبانی بود که دیدم فردی bug مورد نظر را به مسئول آن گزارش کرده بود و در پاسخ آمده بود "از آنجایی که شما از نسخه رایگان استفاده می کنید نمی توانم patch را در اختیارتان قرار دهم و باید منظر ارائه نسخه xx.1 باشید"

همراه به فکر هستند تا امکانات و ابزار ویژه برای انتقال از یک نسخه Qt به نسخه بعدی را در اختیار مشتریان قرار دهند.
کومپوننت های بسیاری زیادی دارد تا کارهای GUI را آسان تر کند.

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

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

از جمله نرم افزارها: Autodesk mudbox ، Google earth ، Photoshop album


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

موفق باشید

مهدی کرامتی
دوشنبه 16 اردیبهشت 1387, 16:18 عصر
کدامیک از این مجموعه ها خاصیت های نمایشی راست به چپ را بطور کامل پشتیبانی می کنند؟

Nima_NF
دوشنبه 16 اردیبهشت 1387, 16:51 عصر
کدامیک از این مجموعه ها خاصیت های نمایشی راست به چپ را بطور کامل پشتیبانی می کنند؟
همانند برنامه نویسی native در هر دو پشتیبانی می شود.

این تولکیت ها برای پیاده سازی خودشان در لایه زیرین از همان API ها و امکانات native خود سیستم عامل استفاده می کنند، بنابراین تمامی همان امکانات حتی اگر پیاده سازی نشده باشند نیز در اختیارتان هست چرا که می توانید با API های آن سیستم عامل انجام دهید.
مثلا در ویندوز از win32 و در لینوکس از +GTK می تواند استفاده کنید.
در هر حال فکر می کنم Qt قابل اعتماد تر هست

Right-To-Left layout (RTL) support in wxWidgets (http://wxwidgets.blogspot.com/2006/10/right-to-left-layout-rtl-support-in.html)

Bi-directional Language Support in Qt - right to left (http://trolltech.com/products/qt/features/internationalization)

razavi_university
سه شنبه 17 اردیبهشت 1387, 01:06 صبح
براي انتشار روي سيستم عامل ‌هاي ديگر ، فقط داشتن لايسنس جديد كافيست؟ (نيازي به تغيير خاصي در كد ندارد؟)
توليد برنامه توسط آن با لايسنس ك.ر.ك كه مشكلي براي اجراي برنامه‌مان ايجاد نمي‌كند؟

Nima_NF
سه شنبه 17 اردیبهشت 1387, 02:55 صبح
اگر برنامه شما از قابلیت های منحصر به فرد سیستم عامل استفاده نکرده باشد بله تغییرات خاصی نیاز نیست،
اما همواره ما در برنامه نویسی ها از قابلیت های مختص به نسخه جدید سیستم عامل استفاده می کنیم تا برنامه به شکل جدید خود تبدیل شود، مثل کارهایی که در Windows vista وجود دارد و در نسخه های قبلی ویندوز و یا لینوکس وجود ندارند. پس در اینگونه موارد اگر خود این تولکیت ها این امکان را پیاده سازی نکرده باشند، خودتان باید تغییرات جزئی در کدها بدهید تا برنامه برای پلتفرم بعدی نیز آماده ارائه شود.

با توجه به آشنایی با نرم افزارهای برخی از شرکت های خارجی که از این ابزار استفاده می کنند، معمولا 1 تا 3 ماه بعد از ارائه نسخه ویندوز برنامه، نسخه لینوکس و مکینتاش را عرضه می کنند.

قطعا لايسنس غیر قانونی در ایران مانند سایر موارد نمی تواند مشکل ایجاد کند، اما فکر نمی کنم چنین چیزی برای نسخه تجاری وجود داشته باشد.
توجه داشته باشید که هدف از خرید، سورس کد کامل کتابخانه ها و پشتیبانی آن هست، چرا که هر چند روز نسخه جدیدی از آن برای رفع مشکلات عرضه می شود. در غیر این صورت نسخه open source به صورت رایگان در اختیار شماست.

Sepidar
چهارشنبه 18 اردیبهشت 1387, 11:59 صبح
همانند برنامه نویسی native در هر دو پشتیبانی می شود.

این تولکیت ها برای پیاده سازی خودشان در لایه زیرین از همان API ها و امکانات native خود سیستم عامل استفاده می کنند، بنابراین تمامی همان امکانات حتی اگر پیاده سازی نشده باشند نیز در اختیارتان هست چرا که می توانید با API های آن سیستم عامل انجام دهید.

فكر مي‌كنم فقط wxWidgetsاينطور هست و QT از موتور نمايش داخلي خودش بهره مي‌برد.

Nima_NF
چهارشنبه 18 اردیبهشت 1387, 15:54 عصر
فكر مي‌كنم فقط wxWidgetsاينطور هست و QT از موتور نمايش داخلي خودش بهره مي‌برد.
موتور داخلی این دو تولکیت یعنی همان پیاده سازی توابع و امکانات از طریق توابع native هر سیستم عامل.
اصلا به خاطر همین native بودن هست که بحث قدرت این تولکیت ها مطرح هست و به دنبال آن بحث خرید لایسنس آن مطرح می شود تا سورس کد تمام کتابخانه در دسترس قرار گیرد.

حتی اگر نسخه رایگان یا همان open source این Qt را دریافت کنید می بینید که در ویندوز مستقیما از همان win32 استفاده می کند و ضمنا شما نیز بدون هیچ تغییری هر جایی که می خواهید می توانید مثلا کدهای win32 را برای نسخه ویندوز در برنامه خود استفاده کنید.


به عنوان مثال در کد زیر ،در میان برنامه با استفاده از Q_WS_WIN می توانیم از API ها ویندوز استفاده می کنیم که در اینجا ما از Rectangle یکی از توابع GDI استفاده کردیم و برای سازگاری با کلاس های Qt هم از متد های تخصیص و آزاد کردن حافظه خود Qt استفاده می کنیم:



#ifdef Q_WS_WIN //for windows
HDC hdc = painter.paintEngine()->getDC();

Rectangle(hdc, 40, 40, 100, 100); // win32 API / GDI

painter.paintEngine()->releaseDC();
#endif


به همین ترتیب در X11 و Mac

Inprise
چهارشنبه 18 اردیبهشت 1387, 16:35 عصر
منظورش اين بود كه QT از كنترلها و ويجت‌هاي استاندارد ويندوز استفاده نميكنه و از موتور رندر خودش استفاده ميكنه كه درست هست . wxWidgets اينطور نيستش و از كنترلهاي استاندارد ويندوز استفاده ميكنه . مكانيزم مديريت رخداد QT هم مستقيما بر اساس پياده سازي ويندوز نيست .

Nima_NF
پنج شنبه 19 اردیبهشت 1387, 00:18 صبح
تشکر ،الآن متوجه شدم منظورشان چه بود.
بله برای Qt کاملا همین طور است چون تمامی widget ها دارای قابلیت های جدید هستند، لذا دوباره تعریف شده اند.(در هر صورت منظور من هم لایه زیرین بود که این طراحی ها هم جزئی از آن هست چرا که رابط کاربری بخشی از کار این تولکیت هاست)

نکته ای که اینجا وجود دارد این هست که در wxWidgets آن دسته از کنترل هایی که در ویندوز وجود دارند به همان شکل از كنترلهاي استاندارد استفاده می کنند، اما سایر widget های جدید که در ویندوز و یا سایر سیستم عامل ها به صورت استاندارد وجود ندارند (انواع پیشرفته تر کنترل ها یا به قولی انواع Extended ) همانند کنترل های Qt پیاده سازی شده اند و حتی به خاطر جدید بودن، event آن ها نیز تعریف شده است و برخلاف Qt با قبلی ها ترکیب نشده اند و در کنار کنترل های استاندارد با نامی دیگر وجود دارند.

ضمنا جناب razavi_university این مورد را هم به تفاوت این دو تولکیت اضافه کنید که در Qt تعداد widget های سفارشی یا همان کنترل های جدید، بیشتر از wxWidgets می باشد و باعث می شود به سادگی بتوانید از انواع پیشرفته ماندد Tool Box بدون نیاز به طراحی استفاده کنید و حتی آن ها را نیز سفارشی کنید.

.

amytis
جمعه 15 شهریور 1387, 06:04 صبح
با سلام
امیدوارم که همیشه شاد و سلامت باشید


در این مقاله به بحث پیرامون C++/Qt خواهیم پرداخت و همزمان با مفاهیم اولیه Qt آشنا خواهیم شد. همچنین با IDE قدرتمند Eclipse و پیکربندی آن جهت استفاده در کد نویسی C++/Qt, C/C++, Perl, Python/Jython, Ruby و هر زبان برنامه نویسی دیگری آشنا خواهیم شد.
در پایان نحوه نصب و پیکربندی Qt به همراه کامپایلر مورد نظر آن یعنی GCC Compiler را جهت کار با Eclipse مورد بررسی قرار می دهیم.
به دلیل تسلط نگارنده بر Mac OS X و Windows تمامی مقاله پیرامون Leopard و XP Professioanl x86 می باشد و نصب نرم افزارهای مورد نظر در لینوکس و سایر سیستم های عامل موردنظر را به خوانندگان گرامی واگذار می نماییم.
همچنین فرض بر این است که خوانندگان گرامی دارای مهارت لازم در کار با C و یا C++ می باشند.

در نگارش این مقاله قریب ۸۰ مرجع بکار گرفته شده است.
این مقاله در ۸۵ صفحه نگارش یافته است.

زبان مقاله کاملا فارسی می باشد.



Download Link: C++/Qt over Eclipse - Part I (Introduction & C/C++, Java, Perl, Python/Jython, Ruby, etc. in one IDE). (http://www.babaei.net/?req=articles&id=n8pBGaxHOT3I0jCe0) x



دریافت مقاله های قبلی:

http://www.babaei.net/?req=articles



نکته: جهت دریافت مقاله نیاز به ورود ایمیل و ثبت آن می باشد. پس از انجام این عمل یک لینک دانلود مستقیم اما اختصاصی برای آدرس ایمیل شما ایجاد و سپس ارسال می شود. در ایمیل ارسالی اطلاعات مربوط به مقاله از قبیل حجم٬ پسورد و ... به همراه لینک دریافت در انتهای نامه موجود می باشد. حداکثر اعتبار این لینک ۷۲ ساعت می باشد.

kiuhnmgtrdcv
چهارشنبه 16 اردیبهشت 1388, 20:11 عصر
بنظر من QT/Eclipse مثل win32 ویژوال سی پلاس مایکروسافت میمونه با این تفاوت که میشه کدهای native برای هر سیستم عاملی بنویسیم
ولی در هر حال برای برنامه نویسی native برای ویندوز باید با API ویندوز اشنایی داشته باشیم چون توی QT از همین توابع استفاده میکنند و برای لینوکس از GDK+ و ..