# Native Code > برنامه نویسی با C > برنامه نویسی در محیط QT و هم خانواده هایش >  اعترافات یک Qt کار!!

## eshpilen

توضیح: من این مطالب رو در یک فروم پایتون نوشتم اما فکر میکنم برای اینجا هم مفیده.
منتظر نظرات شما هستم.

=========================

بطور مثال من یه زمانی رفتم سراغ Qt و البته از این بابت پشیمون نیستم چون یک چیزی بلدم که باهاش میتونم روی لینوکس هم اپلیکیشن بنویسم (کار کردن با محیط و کتابخانه های دیگش بنظرم خیلی سختتر باشه). ضمنا Qt خیلی هم خوشدسته. البته الان که پایتون بلدم پایتون رو هم میتونم اضافه کنم! ولی بنظر من پایتون یه ابزار بیشتر برای کارهایی مثل برنامه های بدون GUI و یوتیلیتی و نوشتن اسکریپت های خودکار سازی کارهای سیستم هست تا اینکه بتونه جایگزین چیزی مثل Qt و سی++ که مستقیما بصورت استاندارد و Native کامپایل میشه بحساب بیاد. ضمنا پایتون روی لینوکس بیشتر Match و قدرتمند بنظر میاد تا روی ویندوز. اصلا بیشتر به فلسفه و ساختار لینوکس میخوره.

حالا داشتم میگفتم و از بحث منحرف نشم! صحبت این بود که Qt اول بنظرم بدون نقص بنظر میامد و هیچ کس هیچ کجا هم به ضعف ها و نقصهای اون اشاره ای نکرده بود و فقط تبلیغ میشد که خیلی کامل و عالیه و مستقل از پلتفرمه و روی ویندوز و لینوکس و حتی موبایل ساپورت میشه و غیره.
خب تصور من این بود که خوبه اینو یاد میگیرم و دیگه هر برنامه ای رو چه روی ویندوز چه روی لینوکس مینویسم.
اما واقعیت و تجربهء عملی و مشکلات و محدودیت هایی که بهش برمیخورید اکثرا خیلی از این تفکر ایدئال فاصله داره.
نه بگم کیوت چیز بدی بود و پشیمون شدم و نمیشه ازش روی ویندوز استفاده کرد و کاربرد نداره. اما اون تفکر کامل بودن و یکسان بودن برای همه کاربرد و همه جا درست نبود. اونم وقتی با زبانها و کتابخانه های بومی خود ویندوز یا میکروسافت مقایسه میکنی میفهمی که واقعا کمبود زیاد وجود داره و اصولا نمیشه یا خیلی سخته که یک ابزار غیربومی و غیررسمی به حد ابزارهای بومی و رسمی کامل و قابل اتکا و بروز باشه.
اولین محدودیت هایی که بهش برخوردم بطور مثال کمبود پخش مالتی مدیا مثل mp3 و ویدئو بود. اون زمان phonon (فریمورکی برای مالتی مدیا که همراه و جزیی از پکیج و فریمورک Qt هم هست) روی نسخهء بازمتن ویندوز در دسترس نبود چون با کامپایلر mingw کامپایل نمیشد (ظاهرا بخاطر نقص/اشتباه هایی در هدرهای mingw). هرچند من تلاش بسیاری کردم و سرانجام از طریق بعضی از منابع غیررسمی و آزمایشی موفق شدم phonon رو کامپایل کنم و راه بندازم. اما حتی با اینحال مثلا پخش ویدئوها به علتی که نمیدونم روی سیستم شخص من که از نظر سخت افزاری سیستم قدیمی ای هست مشکل داره (تصویر خرابه)، ولی روی سیستمهای دیگه که تست کردم بدون مشکل بود، اما مشخصه که اگر از کتابخانه های اصلی خود ویندوز استفاده میکردم این مشکل ویدئو وجود نداشت! پس این یک مورد که هنوز هم حل نشده.
خوشبختانه امروز کیوت دیگه روی ویندوز به phonon کامپایل شده بصورت پیشفرض مجهز هست (اما مشکل ویدئوی من همچنان حل نشده هست).
البته راه حل ذکر شدهء دیگه، کامپایل کردن کیوت توسط ویژوال سی++ میکروسافت بود اما منی که هیچ زمینه ای نداشتم و محیطش رو هم نداشتم و با همون mingw هم به کلی خطا و دردسر برمیخوردم و هر بار کامپایل روی سیستم پنتیوم III من 7 ساعت طول میکشید دیگه حال و امید اینکار رو نداشتم. جالب اینکه با همون mingw هم که کیوت خودش باهاش کامپایل اولیه شده بود بعضی اجزاء کیوت مثل WebKit رو نتونستم کامپایل کنم و خطای سینتاکس و غیره میداد تاجایی که یادمه، بنابراین بعید نبود با ویژوال سی میکروسافت هم به دردسرهای مشابه و حتی بیشتری برخورد بکنم. گذشته از اون دوست نداشتم با ابزارهای انحصاری میکروسافت کار کنم و به اونها وابسته باشم، خصوصا که یکی از دلایل انتخاب کیوت، بازمتن بودن اون بود.
حتی یکسری ویژگی اشتباه توی سورسها و سیستم کامپایل کیوت بود که با دردسر و هوشمندی موفق به برطرف کردن اونا شدم. مثلا خطاهایی مربوط به کامپایل D3D میداد که وقتی با مسئولین شرکت تولیدکنندهء کیوت (الان جزیی از نوکیا) تماس گرفتم معلوم شد D3D یک ویژگی آزمایشی و ناموفق بوده که ظاهرا یادشون رفته بوده یا اهمیت ندادن و فکر یک آدم بی خبری مثل من رو نکرده بودن که غیرفعالش کنن! حالا فکر کنید همین یک قلم چقدر وقت و انرژی منو تلف کرد.

بعد تازه وقتی خوندن رفرنس و امکانات کیوت رو تموم کردم به فکر امکاناتی مثل استفاده از webcam افتادم. این هم در کیوت ساپورت نشده! اینجا بود که متوجه شدم کتابخانهء غیررسمی و خارجی ای مثل کیوت بصورت طبیعی میتونه چقدر ناقص تر از کتابخانه های اصلی ویندوز باشه. قبل از اینکه کیوت و کلا برنامه نویسی اپلیکیشن رو یاد بگیرم اصلا با این امکانات و مسائل آشنا نبودم و به ذهنم خطور نمیکرد.
البته فراموش نکنید که کیوت هر روز پیشرفت میکنه و ممکنه به زودی خیلی امکانات بهش اضافه بشه (یا شده باشه و من خبر ندارم!!).

بعد یه روزگاری دیگه نیاز به Cryptography پیدا کردم که اینهم دوباره در کیوت نبود! با اینکه چیز مهم و پرکاربردی هست که جزء خیلی از کتابخانه های اپلیکیشن نویسی باید باشه. البته یه چیزی غیررسمی پیدا کردم بنام QCA اما هرچی سعی کردم نتونستم درست و حسابی راهش بندازم (با خطای ویندوز کرش میکرد) و کسی هم نتونست توی فرومی چیزی مشکل منو حل کنه و بفهمه اصلا علتش چیه (حالا شما بگید آیا این مشکل با کتابخانه های دات نت پیش میاد؟)
وقتی میگی فلان امکان رو میخوام یا فلان کار میشه همه بهت میگن بله هست و میشه و راحت هم هست. حتی خیلی ها بدون اینکه خودشون تجربهء کافی عملی داشته باشن یا حتی تاحالا اون کار رو انجام داده باشن بهت اینطور میگن. اصلا نه حتی اگر اون اشخصاص تجربه هم داشته باشن وقتی یکی مثل من به مشکل خاصی بخوره کی میتونه حلش کنه؟ تقریبا هیچکس!
اما یه کتابخانهء رسمی بخصوص وقتی بومی هم باشه بعیده با اینطور مشکلات خاص روبرو بشه و اگرم بشه اغلب انتظار میره توسط مراجع رسمی برطرف بشه (پس از گزارش باگ) یا اصلا خودشون کشف و توی نسخهء بعدی رفعش کنن.
البته من بالاخره موفق شدم یک کتابخانهء دیگه بنام crypto++ برای رمزنگاری پیدا کنم که کتابخانهء معروفی تحت سی++ هست. ولی همونم کلی تحقیق و دردسر و نیاز به کامپایل با mingw داشت تا با کیوت اپن سورس کار کنه. تازه حتی اونم موقع اقدام به کامپایل با mingw خطای سینتاکس میداد ولی خوشبختانه علتش یا راه حلش رو تونستم تاحدی حدس بزنم و وصله و پینش کنم تا کامپایل بشه (بهرصورت کامپایلش اونم با خود کیوت تقریبا یک معجزه بود چون تقریبا چشم بسته عمل کردم!!). اما بهرصورت نیاز به یادگیری و خوندن رفرنس این کتابخانه هم که ساختارش شبیه Qt نبود و هماهنگی نداشت هم شدم و کدهای برنامه بهرصورت کمی وصله و پینه میشه چون یک فریمورک و کتابخانه رو که ساختار خاصی داره باید با API و ساختار یک کتابخانهء دیگه که سیستم منطقی دیگری داره پیوند بدید. البته بازم جای شکرش که کارم راه افتاد و کلی چیزها هم یاد گرفتم. گاهی فکر میکنم چطور اون کارها رو کردم! مثلا حتی موقعی که Qt هنوز مشکل Phonon رو بصورت رسمی حل نکرده بود یک برنامه و پکیج با استفاده از دستورات خط فرمان ویندوز نوشتم (بصورت یک فایل CMD که درواقع همون Batch file قدیم و داس هست) که بطور خودکار Phonon رو برای کیوت کامپایل میکرد. این برنامه چند صد بار دانلود شد و ظاهرا خیلی ها ازش استفاده کردن و در یک وبلاگ خارجی هم نقل شده بود. تازه پکیج من اولش خیلی ناقص و ضعیف بود و در نسخه های آخر دیگه شاهکار شده بود! چون مثلا زمان کامپایل رو با استفاده از ترفندی از 7 ساعت به 15 دقیقه رسونده بودم!! (منتها بعد از یک هفته نسخهء رسمی کیوت درست شد!!). بعضی ها که از این پکیج استفاده میکردن و به مشکل برخورده بودن با من تماس میگرفتن (همشون خارجی بودن). و پکیج بنده بعنوان راحتترین و عملی ترین راه اضافه کردن امکان مالتی مدیا به Qt تحت mingw مطرح شده بود چون کامپایل دستی خیلی مراحل و جزییات داشت و منبع قدم به قدم مناسبی هم برای وجود نداشت که تمام مسائل و جزییات رو توضیح داده باشه. یک کسی که میخواست از روی منابع ناقص و مبهم و پراکنده ای که وجود داشت phonon کیوت رو کامپایل کنه باید صدها برابر وقت و انرژی میذاشت و ده ها برابر حجم برنامهء من دانلود میکرد و کلی هم کامپایل طول میکشید و دست آخر هم چند بار باید اینکار رو تکرار میکرد تا بفهمه کجا اشتباه کرده و درستش کنه.

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

در اکثر موارد یک ابزار غیررسمی و غیربومی به اندازهء ابزار رسمی و بومی قابل اتکا نیست و تجربه به من میگه خیلی مشکلات و مسائل عمومی یا موردی هست که وجود دارن اما تا بهش برنخوری کسی بهش اشاره ای نمیکنه و وقتی هم بربخوری خیلی وقتها کسی اونقدری که انتظار داری نمیتونه کمکت کنه.
نمیدونم چرا اینطوری هست ولی بنظر منکه خیلی مسخره هست که آدمهایی که ادعای حرفه ای بودن و داشتن فکر باز رو دارن بنظر میرسه عمدا ضعف ها و مشکلات یک چیزی رو نمیگن یا اینکه اصلا نمیدونن و تجربه و اطلاعات کافی ندارن اما با اطمینان میگن بله هیچ مشکلی نداره و راحته و غیره.
چطور منکه اینقدر روی کیوت وقت و انرژی گذاشتم و دوستش دارم ضعفها و نقصهاش و واقعیت ها رو در اینمورد گفتم؟
شاید بخاطر این باشه که کمتر کسی مثل من دنبال یادگیری چندین و چند زبان و فریمورک میره و اینقدر وقت و پشتکار داره.
مردم فکر میکنن اگر یک زبان و کتابخانه رو انتخاب کردن اگر بگن نقص و ضعف داره دیگه فاجعه هست. درصورتیکه عملا تمام کتابخانه ها و زبانها و پلتفرمها هرکدوم ضعف و نقص خودشون رو دارن یا کاربردشون محدوده و هر زبان و کتابخانه ای برای یک جا و کاربردی مناسبتر هست یا حتی میتونه تقریبا انتخاب دیگری بجز اون یکی خاص در اون مورد و محیط خاص وجود نداشته باشه.

پس تعصب رو کنار بذارید! و هرچیزی رو که لازمه یاد بگیرید. حداقل ادعاهایی رو نکنید که رویای تحقق نیافتهء خودتون بوده!!

----------


## Nima_NF

*** ابتدا عرض کنم که روی سخنم با کسانی هست که این تاپیک را مطالعه می کنند، نه لزوما نویسنده.***


اشکال اینجاست که افراد نباید چنین دیدی نسبت به Qt یا کلا کتابخانه ها و framework های cross-platform داشته باشند. یعنی از نظرم من کلا تمام فرضیات شما از ابتدا در مورد Qt غلط بوده است.

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

اگر در جایی گفته شود "Qt کارها را بسیار راحت می کند و می توانید به راحتی برنامه برای 3 سیستم عامل بنویسید" به این معنی نیست که واقعا راحت هست، بلکه این راحت تر ، در مقایسه با دشواری های بسیار زیاد در حالتی هست که باید خودتان تک تک خطوط برنامه را تغییر می دادید ولی با Qt دیگر از بخش GUI راحت خواهید شد و بسیاری موارد دیگر (XML ، پایگاه داده و ...)

اگر می بینید بسیاری از امکانات دیگر جدا از GUI در قالب کلاس های Qt عرضه شده است (فرضا فردا Cryptography هم افزوده شود)، فقط برای این هست که به ندرت و طی هر ویرایش، سایر حوزه های بی ارتباط با GUI را نیز بگیرد و روز به روز این کتابخانه کامل تر شود و فراتر از GUI شود.

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

 حتی در ویندوز کسی که با MFC کار می کند، باید  API های ویندوز را بشناسد و در بسیاری از موارد باید مستقیم از API های استفاده کند، چون همه این امکانات در MFC پیاده سازی نشده است.

----------


## eshpilen

البته کیوت انصافا خیلی فراتر از یک کتابخانهء رابط گرافیکی هست و یک فریمورک اپلیکیشن نویسی بحساب میاد. یعنی این دقیقا در رفرنسهای رسمی بهش اطلاق شده و اون رو فقط یک کتابخانه یا فریمورک GUI ذکر نکرده بلکه گفته فریمورک اپلیکیشن نویسی و حتی فراتر (چون انواع دیگری از برنامه هم میشه باهاش نوشت و امکاناتی در زمینه های دیگر هم پیشبینی شده).
http://en.wikipedia.org/wiki/Qt
در لینک بالا هم بعنوان Application framework معرفی شده.
بنابراین بنظر من چنتا امکانات مهم متداول در اپلیکیشن نویسی رو اگر بهش اضافه کنن خیلی عالی و مفیده.
وقتی ما از کتابخانه های دیگه استفاده میکنیم به مشکلات زیادی برمیخوریم. مثلا درمورد کیوت اگر بخواید از کتابخانه های ویندوز استفاده کنید اول باید کل کیوت رو با ویژوال سی++ از اول کامپایل کنید که خود اینکار میتونه مهارت و دانش فنی لازم رو بخواد و بعید نیست با مشکلاتی بربخوره. از طرف دیگه تمیزی و انسجام و هماهنگی ساختار در کد تاحدودی که میتونه قابل توجه باشه بهم میخوره.
تمام اینا عوامل منفی محسوب میشن. هرکسی مثل من سمج نیست چندین و  چندبار ساعتها کامپایل کنه. من گاهی شبها هم که میخوابیدم سیستم رو میذاشتم تا کامپایل کنه!! تا بالاخره تونستم راه کامپایل phonon رو پیدا کنم و ضمنا یک پکیج بهینه و خودکار براش بسازم. تازه تمام اینا کار فنی و تحقیق زیادی میخواد.
از طرف دیگه اگر من کتابخانه های بومی و کاملتری رو بلد باشم دیگه چرا بیام با Qt برنامه بنویسم؟ اگر بخواد برنامم ترکیبی از یک کتابخانهء مستقل از پلتفرم و کتابخانه های وابسته به پلتفرم باشه دیگه مزایای مستقل از پلتفرم بودن هم کمتر میشه عملا. و خیلی مسائل جانبی دیگه مثل اینکه اگر با کتابخانه های بومی کار کنم برنامم قابلیت کار تیمی و ارائهء بیشتری در بازار کار داره و غیره.
البته در برنامه هایی که نیازهای ویژه و وابسته به پلتفرم ندارن میشه از این فریمورک به شکل عالی بهره مند شد و هم خوشدسته و هم مستقل از پلتفرم.

----------


## حامد مصافی

پخش mp3، اتصال به وبكم در بقيه فريم ورك ها هم نيست. اينكه امكاني جز يك چهار چوب نيست دال بر ضعف يك فرم ورك نيست. يك چهار چوب همانگونه كه از نامش پيداست در چهارچوب خاصي امكاناتي را عرضه مي كند.





> از طرف دیگه اگر من کتابخانه های بومی و کاملتری رو بلد باشم دیگه چرا بیام با Qt برنامه بنویسم؟


اگر قصد داشته باشيد براي سكوي خاصي برنامه نويسي كنيد و احياناً اگر كتابخانه خوشدست تري سراغ داريد مي توانيد با آن برنامه نويسي كنيد اما در مورد مقاصد و اهداف Qt مانند چند سكويي و خروجي بومي هر سيستم عامل كمتر كتابخانه اي مانند آن وجود دارد و در بين موجودات نيز Qt كاملترين و خوشدست ترين آنهاست.
اما كتابخانه هاي بومي مانند MFC يا حتي توابع سطح پايين API نيز نياز هاي شما را به گونه اي كه انتظار داريد بر آورده نخواهد كرد. نبايد انتضار داشته باشيد تمام آنچه كه از آن استفاده خواهيد كرد در كتابخانه مورد استفاده شما موجود باشد.

در پست اول فقط در مورد كمبود ها صحبت كرديد كه اين ايراد را بر تمام كتابخانه ها و فريم ورك ها مي توان گرفت.

----------


## saleh.hi.62

> اولین محدودیت هایی که بهش برخوردم بطور مثال کمبود پخش مالتی مدیا مثل mp3  و ویدئو بود.


دوستان مگه VLC PLAYER که روی ۳ تا سیستم عامل اجرا میشه باQT نوشته نشده؟ خوب فکر میکنم بخوبی میتونه صدا و تصویر رو پخش کنه.


با QT پروژه های موفقی نوشته شده که حتما همه شما در جریان اونها هستین.
مثلا خیلی برای من جالب بود که virtual box که توسط خود کمپانی sunارایه میشه توسط QTنوشته شده و از صرفا از javaاستفاده نشده .

در ضمن من به یه کتابخانه بر خوردم که فکر میکنم برای شما جالب باشه امتحان کردنش. برای منظور multimedia  استفاده میشه. SFML

----------


## Nima_NF

> دوستان مگه VLC PLAYER که روی ۳ تا سیستم عامل اجرا میشه باQT نوشته نشده؟ خوب فکر میکنم بخوبی میتونه صدا و تصویر رو پخش کنه.


مواردی که مد نظر شما هست را با ++C می نویسند نه Qt
Maya را با ++C نوشتند و در آن از DirectX و OpenGL استفاده کردند و Qt را برای رابط کاربری استفاده کردند.

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


ضمنا به یاد داشته باشید هر فرمتی برای خودش حق نشر دارد، مثلا هر کسی اجازه ندارد رایگان فرمت پخش mp3 را در برنامه خود قرار دهد، این کار غیر قانونی هست. یا باید خود برنامه پخش کننده کلا رایگان باشد (حیت در یک بازی و ..)، یا اینکه با پرداخت چند هزار دلار لیسانس آن را بگیرد. عبارت mp3 is patented را جستجو کنید.


در کل باید همه این طرز تفکر را کنار بگذارند، که با یک کتابخانه همه برنامه ها نوشته می شود، شما باید از ++C (زبان برنامه نویسی) استفاده کنید.
Qt / .Net / MFC / Wxwidgets / ... این ها همگی کتابخانه هایی هستند که باید برای آن ها با خود زبان برنامه نویسی کد بنویسید، اگر cross-platform هست از ++C استفاده می کنیم، چون در سایر سیستم عامل ها نیز وجود دارد و به همین خاطر می گویند زبان قابل حمل.

----------


## eshpilen

البته شركتها و برنامه نويسان حرفه اي كه روي پروژه هاي بزرگ و خيلي وقتها تيمي كار ميكنن مشكل زيادي ندارن چون پروژه هاي اونا خواه و ناخواه از اجزاء و كتابخانه هاي مختلفي استفاده ميكنه و ظرفيت مالي و فني و منابع انساني مورد نياز درمورد كار اونها وجود داره يا بهرصورت بايد و تامين ميشه.
همين Qt خودش از اجزاي مختلفي ساخته شده. مثلا Phonon يك فريمورك مالتي مدياي سطح پايين هست تاجايي كه ميدونم و يك پروژهء بازمتن كه در كيوت هم استفاده شده. همينطور مثلا WebKit كه يك پردازشگر و رندر كنندهء HTML و جاوااسكريپت و اينهاست؛ البته شايد موتور جاوااسكريپت هم خودش جدا باشه و من نميدونم. همينطور خيلي اجزاء ديگه بنظرم (يه نگاهي به دايركتوري src\3rdparty كيوت خودتون بكنيد - بنظرم هركدوم از اون دايركتوري هايي كه ميبينيد حاصل يك پروژهء بازمتن مستقل از كيوت هستن كه در كيوت ازشون استفاده شده).
فقط خواستم بگم كه اكثر برنامه ها و فريمورك هاي بزرگ بازمتن خودشون از اجزاي مختلف و پروژه هاي مختلف تشكيل شدن. اما كار كنار هم آوردن و تطبيق و كامپايل اينها با هم كار هركسي نيست و معمولا بدون موانع و مشكلات اوليه هم پيش نميره.
براي يك برنامه نويس اپليكيشن عادي يادگيري و انجام مشابه اين كارها ميتونه خيلي سخت و هزينه بر باشه.
بنظر من اگر چند امكان ديگه رو توي خود كيوت بذارن واقعا قدرتمندتر ميشه.
البته همين الانش هم اصلا چيز كمي نيست و امكانات گسترده اي داره و استايل و كدنويسي خيلي خوبي كه دركل ميشه بسياري اپليكيشن ها رو تماما با كيوت و بدون استفاده از كتابخانه هاي ديگري نوشت؛ ولي خب من نياز و انتظار بيشتري داشتم و فكر ميكنم اين نيازها و انتظارات طبيعي و متداول باشه.
كيوت خيلي امكانات داره. خيلي فراتر از يك كتابخانهء رابط گرافيكي هست. همونطور كه اسمش روشه يك فريمورك اپليكيشن نويسي هست (يعني خيلي از برنامه هاي دسكتاپ مورد نياز در زمينه هاي مختلف رو ميشه باهاش ساخت).

----------


## eshpilen

> دوستان مگه VLC PLAYER که روی ۳ تا سیستم عامل اجرا میشه باQT نوشته نشده؟ خوب فکر میکنم بخوبی میتونه صدا و تصویر رو پخش کنه.


من نميدونم VLC  از چه روش و كتابخانه ها و كدكهايي استفاده ميكنه.
اما بهرحال الان كيوت مشكل مهمي در زمينهء پخش فايلهاي مالتي مدياي متداول نداره و اين قابليت سرخود روش هست و نيازي نيست شما يك كتابخانهء ديگه استفاده كنيد و با روش و استايل ديگري كد بنويسيد. 
اون مشكلي كه من بهش اشاره كردم مربوط به نسخه هاي قديمي تر بود و منظورم از بيانش نشون دادن محدوديت هاي عملي و مثلا مشكلاتي مربوط به عدم رسمي بودن و بومي بودن كتابخانه ها بود.
هرچند الانش هم ويدئوي پخش شده با Qt روي سيستم من اشكال داره (اما VLC اين مشكل رو نداره)؛ اما اين مشكل رو روي سيستمهاي ديگه اي كه تست كردم نداشت خوشبختانه. احتمالا سيستم من چون قديمي هست (پنتيوم 3 با گرافيك آنبورد) و سخت افزار خاصي داره كه كيوت/Phonon باهاش مشكل داره يا بعلت كمبود سرعت و غيره هست، اما من اين مشكل رو مثلا با مدياپلير خود ويندوز ندارم.

----------


## Nima_NF

> احتمالا سيستم من چون قديمي هست (پنتيوم 3 با گرافيك آنبورد) و سخت افزار خاصي داره كه كيوت/Phonon باهاش مشكل داره يا بعلت كمبود سرعت و غيره هست، اما من اين مشكل رو مثلا با مدياپلير خود ويندوز ندارم.


Phonon در ویندوز از DirectShow استفاده می کند و  نیازمند DirectX نسخه 9 به بالا یا OpenGl هست، که شما در هنگام کامپایل  Qt تعریف می کنید. البته احتمالا بتوانید بدون نیاز به DirectX نیز در کامپیوتر فرد اجرا کنید یعنی به جای hardware به شکل software اجرا شود که البته سرعت اجرا بسیار پایین می آید. (در جایی که کارت گرافیک وجود ندارد، یا onboard قدیمی هست)

در لینوکس از GStreamer  و در Mac OS X از QuickTime نسخه 7 به بالا استفاده می کند.

پس برنامه Qt هنگام setup باید کتابحانه های موارد فوق را در سیستم فرد نصب کند، یا اینکه به فرد بگویید خودش آن ها را نصب کند.

----------


## eshpilen

خيلي ممنون از توجه و راهنمايي شما.
من سيستم و برنامه رو دوباره بررسي كردم ولي DirectX نسخه 9c از قبل روي سيستم نصب هست.
بهرصورت ممكنه چون سخت افزار من قديمي هست DirectX نسخه 9 عملا نميتونه از امكانات مورد نيازش استفاده كنه.

----------


## eshpilen

راستي اينم تصوير از چگونگي خرابي ويدئو.
البته همونطور كه گفتم اين اشكال فقط روي سيستم خودم ديده ميشه.
مشخصات سيستمم:
PIII 800MHz
OnBoard Graphics SIS630 chipset
Windows XP SP2
DirectX 9c

----------

