با سلام
متاسفانه علی رغم اینکه این سوال به کرات در این انجمن مطرح می شه اما گویا کاربران تازه وارد همچنان با یافتن پاسخ آن دچار مشکل هستند. شاید بهتر باشد تا صفحه ای در ویکی در این رابطه ایجاد شود تا ابهامات و سوالات تا حد قابل قبولی مرتفع گردد. اما پاسخ سوال:
احتمالا همان طور که شما نیز می دانید باید توجه داشت که زبان سی پلاس پلاس به صورت استاندارد سینتکس و یا کتابخانه ای را برای کار با گرافیک و برنامه نویسی رابط گرافیکی کاربر مهیا نمی سازد. در واقع فراهم اوردن چنین امکاناتی بر عهده سیستم عامل می باشد. بنابراین این وظیفه خود برنامه نویس است که با استفاده از کتابخانه های خارجی و یا مستقیما با سیستم عامل ارتباط برقرار کرده و دست به ایجاد رابط گرافیکی زند.
در این روش مشکلات اساسی وجود دارد . مشکل اول این است که API های سیستم عامل که اجازه ایجاد و کار با رابط گرافیکی را می دهند بسیار سطح پایین هستند و کار با آنها دشوار و هزینه بر می باشد. برای حل این مشکل کتابخانه ها و ابزار های واسطه ای ایجاد شدند که کار را برای برنامه نویسان ساده تر کنند. به طور مثال API هایی که توسط Visual Studio در دسترس برنامه نویسان ویندوز قرار دارند به همین منظور طراحی شده اند. البته شرکت های دیگری چون Borland نیز دست به ساخت چنین ابزار ها و کتابخانه هایی زده اند. علاوه بر این کتابخانه ها این شرکت ها معمولا یک محیط مجتمع توسعه IDE هم ارائه می کنند تا برنامه نویسان به شکل راحت تری از آن کتابخانه ها استفاده کنند. به طور مثال شما در ویژوال استودیو می توانید به جای نوشتن کد برای ایجاد یک دکمه بر روی صفحه ، با استفاده از IDE شمایل یک دکمه را بر روی یک فرم رسم کنید.
همان طور که شما برای نوشتن یک برنامه به زبان ++C در ویندوز که مجهز به رابط گرافیکی هم باشد انتخاب های متعددی پیش رو دارید (مثلا همین Visual Studio یا Borland ) در لینوکس نیز کتابخانه ها و ابزار های متعددی برای این منظور وجود دارند. بنابراین اولین کاری که شما می بایست انجام دهید انتخاب یک کتابخانه مناسب می باشد. برخی از کتابخانه های محبوب در لینوکس عبارتند از:
+GTK
Qt
WxWidgets
در گام بعد شما احتمالا نیاز به یک IDE دارید تا برنامه نویسی را برای شما راحت تر کند . البته توجه داشته باشید که تمامی IDE ها ممکن است برای تمامی کتابخانه ها مناسب نباشند. برخی از IDE های محبوب در لینوکس:
Qt Creator
Eclipse
Kdevelop
Anjuta
Glade
حال اگر شما این سه بخش را با یکدیگر استفاده کنید می توانید به برنامه نویسی رابط گرافیکی در لینوکس بپردازید. اما طبیعی است که تمامی این ابزار ها مشابه هم نیستند و هریک ویژگی های خاص خود را دارند. با توجه به این موضوع احتمالا دوست دارید بدانید کدام یک برای شما مناسب تر است . متاسفانه و یا خوشبختانه در این زمینه اتفاق نظر وجود ندارد. اما من صرفا بر اساس نظر شخصی خود QtCreator را به شما پیشنهاد می دهم زیرا قابلیت های بسیار ارزشمندی را برای شما فراهم می آورد که سایر فریم ورک ها ممکن است نتوانند ارائه کنند:
* یکپارچگی : کار با این فریم ورک بسیار یکپارچه و متمرکز است و تجربه ای شبیه Visual Studio را برای شما به ارمغان می آورد
* مستقل از سیستم عامل : شما می توانید کد خود را یک بار نوشته و برنامه خود را بدون تغییر برای سیستم عامل های ویندوز ، لینوکس ، مکینتاش و بی اس دی با ظاهر و کارایی یکسان تولید کنید.
* پشتیبانی از تعداد زیادی پلتفرم: شما می توانید علاوه بر برنامه های پی سی ، برای دستگاه های همراه با سیستم عامل های سیمبیان ، ویندوز موبایل ، لینوکس امبدد و میگو نیز برنامه بنویسید.
* وسعت: طراحی رابط گرافیکی تنها بخش کوچکی از توانایی های Qt می باشد و این کتابخانه ابزار های بسیار دیگری از شبکه و پایگاه داده گرفته تا OpenGL را نیز فراهم می آورد.
به هر حال بهتر است نظر سایر دوستان را نیز جویا شوید.
موفق باشید.