گشتاسب مظفریان – GMozafarian

مشاور و توسعه دهنده نرم افزار -Adviser and Software Developer

Qt_Software_logo
۱

معرفی فریم ورک Qt (قسمت یکم)

به نام یزدان پاک

چرا فریم ورک ؟

در شروع برنامه نوسی به دلیل اسپاگتی بودن کد ها برنامه نویس ها مجبور به تکرار بیش از حد روال ها می شدند اما پس از بروز زبان های ساخت یافته و شیئ گرا و متقابلا توابع و کلاس ها   پدیده ای به نام کتاب خانه در زبان ها شکل گرفت که می توان آن را به دو دسته ی کتابخانه های درونی و بیرونی تقسیم بندی کرد . کتاب خانه ها قالبا از توابع و کلاس های کاربردی در زمینه های مختلف تشکیل شده اند . در این مقاله قصد معرفی یکی از بزرگترین و بهترین کتابخانه های زبان C++ را دارم . نام این کتاب خانه کیوت یا در انگلیسی Qt می باشد . کیوت یک کتابخانه ی رایگان و کدباز می باشد . البته یک لایسنس تجاری نیز دارد که امکانات اضافه ای توسط سازندگانش در آن گنجانده شده است .

چرا کیوت ؟

کیوت یک فریم ورک چند سکویی است و این امکان را برای ما فراهم میکند که برنامه های خود را برای سیستم عامل های مختلف کامپایل کنیم . هم اکنون کیوت ۵٫۴ آخرین نسخه از این فریم ورک است و از سیستم عامل های Android ,Ios ,Windows ,BlackBerry ,Mac Os X ,linux/x11         ,Windows Runtime ,WinCE  پشتیبانی میکند و البته لازم به ذکر است که کیوت با C++ نوشته شده است اما فقط مختص به C++ نیست بلکه از زبان های چون C++ , Qml ,Css ,Html5 ,Js ,java , phyton ,c و … نیز پشتیبانی میکند .

تاریخچه Qt :

چارچوب کیوت برای اولین بار در ماه می ۱۹۹۵ بصورت عمومی منتشر شد. توسعه‌ی اولیه‌ی این کتابخانه توسط Haavard Nord و Eirik Chambe-Eng انجام شد که بعدها مدیران ارشد شرکت Trolltech بودند (قبل از اینکه نوکیا کیوت رو بخره) هاوارد و اریک در انستیتوی تکنولوژی نروژ با هم آشنا شدند، زمانی که هر دو در رشته علوم کامپیوتر تحصیل می‌کردند.

علاقه‌مندی هاوارد به برنامه‌نویسی واسط کاربری (GUI) از سال ۱۹۸۸ شروع شد، زمانی که در یک شرکت سوئدی برای توسعه‌ی یک چارچوب برنامه‌نویسی واسط کاربری برای ++C استخدام شد. دو سال بعد در ۱۹۹۰ هاوارد و اریک با هم روی یک برنامه‌ی پایگاه داده‌ای ++C کار می‌کردند. سیستم لازم بود که با یک واسط کاربری در یونیکس، مکینتاش و ویندوز اجرا گردد. یک روز تابستانی که هاوارد و اریک برای تفریح بیرون رفته بودند و روی صندلی پارک نشسته بودن. هاوارد گفت: «ما به یک سیستم نمایشی (Display System) شیئ گرا نیازمندیم.» و نتیجه‌ی این بحث به بنیاد فکری برای چارچوب برنامه‌نویسی واسط کاربری که وابستگی به پلت فورم نداشته باشد و شیئ گرا نیز باشد منجر شد که به زودی توسعه‌ی آنرا شروع خواهند کرد.

در ۱۹۹۱ هاوارد نوشتن کلاسهایی را شروع کرد که با همکاری اریک در طراحی چارچوب، سرانجام Qt شدند. همان سال اریک با ایده‌ی «سیگنال‌ها و اسلات‌ها» آمد، یک نمونه‌ی ساده اما قدرتمند برنامه‌نویسی واسط(GUI) که امروزه توسط چندین ابزار برنامه‌نویسی دیگر نیز استفاده می‌شود. هاوارد ایده را برداشت و یک پیاده‌سازی دستی برای آن آماده کرد. در ۱۹۹۳ هاوارد و اریک اولین هسته‌ی گرافیکی Qt را آماده کرده بودند و می‌توانستند برای آن ویجت بسازند. در انتهای سال هاوارد پیشنهاد کرد که با هم وارد این حرفه گردند تا «بهترین چارچوب GUI برای ++C در جهان» را بسازند.

سال ۱۹۹۴ برای دو برنامه‌نویس جوان ما بدیمن شروع شد، وارد تجارت شدند، هیچ مشتری نداشتند، یک محصول ناتمام، و بی پولی. خوشبختانه همسر هردوی آنها استخدام شده‌بودند و می‌توانستند شوهرانشان را برای دو سال که آنها پیش بینی می‌کردند توسعه‌ی چارچوب طول بکشد پشتیبانی کنند.

کاراکتر Q بعنوان پیشوند اسم کلاسها انتخاب شد، چون در emacs هاوارد خیلی خوشکل بود. و t اضافه شد تا بجای کلمه‌ی toolkit بنشیند. از Xt الهام گرفته شد. (X Toolkit) شرکت آنها در ۴ مارس ۱۹۹۴ به نام Quasar Technologies به ثبت رسید. بعدها Troll Tech و Trolltech شد و در نهایت هم که در سال ۲۰۰۸ نوکیا شرکت ترول‌تک را خرید.

در آوریل ۱۹۹۵ با تشکر از ارتباطی که یکی از اساتید دانشگاه هاوارد برقرار کرد، شرکت نروژی Metis قراردادی با آنها پیرامون ساختن برنامه‌ای با Qt بست. در این زمان Trolltech جناب Arnt Gulbrandsen را استخدام کرد که در همکاری ۶ ساله‌ی خود با ترول‌تک یک سیستم زیرکانه و زیبا برای مستندات کیوت ابداع و پیاده‌سازی کرد البته در کنار کمکی که به کد کیوت می‌کرد.

در ۲۰ می ۱۹۹۵ Qt 0.90 روی sunsite.unc.edu آپلود شد. شش روز بعد این انتشار اعلام شد. این اولین انتشار عمومی Qt بود. کیوت قابل استفاده در برنامه‌نویسی یونیکس و ویندوز بود. که یک واسط برنامه‌نویسی(API) یکسان برای هر دو ارائه می‌داد. کیوت از ابتدای انتشار تحت دو مجوز منتشر می‌شد، یک مجوز برای برنامه‌نویسی غیرآزاد و بستن کد و دیگری مخصوص برنامه‌نویسی آزاد و متن‌باز.

در مارس ۱۹۹۶ نمایندگی فضایی اروپا دومین مشتری کیوت شد. با خرید ۱۰ مجوز تجاری(غیرآزاد) پس با اطمینان کامل، اریک و هاوارد یک نفر دیگر را نیز استخدام کردند. Qt 0.97 در پایان ماه می منتشر شد. و در ۲۴ سپتامبر ۱۹۹۶ Qt 1.0 منتشر شد. در این سال همچنین پروژه‌ی KDE توسط Matthias Ettrich کلید خورد.

Qt 1.2 در آوریل ۱۹۹۷ منتشر شد. تصمیم متیو در استفاده از Qt برای ساختن KDE باعث شد که Qt استاندارد کاملی برای توسعه‌ی برنامه‌های با واسط گرافیکی در لینوکس شود. Qt 1.3 در سپتامبر ۱۹۹۷ منتشر شد.

متیو هم در آوریل ۱۹۹۷ به ترول‌تک پیوست. و آخرین انتشار Qt 1 یعنی Qt 1.40 در ماه سپتامبر این سال آماده‌ی استفاده شد. Qt 2.0 در ماه ژوئن ۱۹۹۹ منتشر شد. Qt 2 یک مجوز آزاد جدید بنام QPL داشت که براساس تعریف متن‌باز ایجاد شده بود. در آگوست ۱۹۹۹ کیوت جایزه‌ی بهترین کتابخانه/ابزار را در LinuxWorld برنده شد.

و خوب ماجراها ادامه پیدا کرد، بعدها Qtopia که راه‌حل کیوت برای موبایلها و دستگاه‌های از این قبیل بود منتشر شد، جایزه‌های زیادی Qt برنده شد، مثلا در دو سال پیاپی جایزه‌ی بهترین چاره(solution) برای لینوکس‌های توکار را برنده شد.

در حال حاضر نیز کیوت در سکوهای لینوکس، ویندوز، مک و دستگاه‌های موبایل و PDAی مختلف قابل استفاده است، و استفاده از آن در حال افزایش می‌باشد، که اخباری پیرامون استفاده Sony Ericsson و Samsung در موبایلهای جدیدشان منتشر شد.

و البته خریداری Qt توسط شرکت Nokia که بعضا از نتیجه‌ی این عمل ترس داشتند، تا بحال به نفع کیوت بوده از جمله انتشار آن تحت مجوز LGPL که باعث استفاده بیشتر از آن شد.

معرفی عرضه های مختلف کیوت »

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

Qt Jambi :

Qt jambi یک نسخه از کیوت برای جاوا است که این اجازه را میدهد که از کتابخانه های کیوت برای جاوا استفاده کنید . Qt jambi از سیستم عامل های لینوکس و تمامی زیر مجموعه های یونیکس , Mac OS X و ویندوز پشتیبانی می کند . تا مارس ۲۰۱۰ شرکت نوکیا از Qt jambi پشتیبانی میکرد . اما هم اکنون بصورت کد باز توسعه داده می شود . آخرین نسخه ی Qt jambi 4.8.5 می باشد .

برای اطلاعات بیشتر میتوانید به وبسایت http://qt-jambi.org/ مراجعه کنید .

Qt Embedded Linux :

Qt Embedded برای سیستم عامل لینوکس وسائل همرا همچون ( PDA , تلفن های هوشم ) عرضه شده است . و آخرین نسخه آن ۴٫۸٫۶ می باشد .

از ابزار های پرکاربرد برای این نسخه می توان :

The Virtual Framebuffer و The VNC Protocol را نام برد .

The Virtual Frame buffer یک نرم افزار مجازی ساز Framebuffer است که برای تنظیم فریم های برنامه بر روی رزولوشن های مختلف صفحه نمایش همانند گوشی ها و PDA ها استفاده می شود .

The VNC Protocol یک نرم افزار مجازی سازی شبکه است شما با این برنامه میتوانید یک شبکه با یک کامپیوتر (سرور) و یک کلاینت که میتواند یک تلفن همراه باشد را مجازی سازی کنید و نیازی به یک شبکه واقعی برای تست نرم افزار نیست .

Qt WinCE :

Qt WinCE برای سیستم عامل Windows CE عرضه شده و هم اکنون که این مقاله را مینویسم نسخه ۵٫۳٫۱ آن در دسترس می باشد . و شما برای استفاده از آن باید visual studio 2005 یا Visual Studio 2008را روی سیستم خود نصب کنید .

Qt Android :

همان طور که از نامش پیداست Qt Android برای سیستم عامل اندروید عرضه شده است لازم به ذکر است که این عرضه جز Qt WebKit, Qt NFCو Qt Serial Port از تمامی ماژول ها پشتیبانی می کند . والبته Qt Android را میتوان بر روی سیستم عامل های ویندوز , لینوکس و مک نصب و استفاده کرد .

بعضب از کارهایی که شما میتوانید با Qt Android انجام دهید در زیر آمده است :

  1. اجرای برنامه های widget و Qml بر روی سخت افزار و شبیح ساز ها .

 

Pyqt :

Pyqt که در wiki qt با نام PySide شناخته می شود . یک نسخه از کیوت برای زبان پایتون است و یک جایگزین مناسب برای برنامه نویسی رابط گرافیکی کاربر درپایتون تکینتر . pyqt یک نرم افزار آزاد ورایگان میباشد . پای‌کیوت توسط شرکت رایانه‌ای ریوربانک بریتانیا توسعه داده می‌شود.

پای‌کیوت چیزی نزدیک ۴۴۰ کلاس و بیش از ۶٫۰۰۰ توابع و متد دارد و میتوان به :

مجموعه قابل توجه ی از ابزارهای رابط گرافیکی کاربر

کلاس هایی برای دسترسی به پایگاه داده (ODBC, mysql ,PostgreSql ,Oracle)

QScintila، ویجت Scintila مبتنی بر ویرایشگر متن غنی

تجزیه کننده XML

پشتیبانی SVG

کلاس هایی برای کنترل اکتیوایکس روی ویندوز ( البته این امکان فقط بر روی نسخه تجاری قرار دارد .)

از اجزای اصلی پای کیوت میتوان به ماژول های مختلف آن که هر کدام وضیفه خاصی دارند اشاره کرد »

از ماژول های اصلی پای کیوت می توان موارد زیر را نام برد :

ماژول QtCore : شامل کلاس های غیر GUI , از جمله حلقه رویداد و سیگنال های کیوت و مکانیزم حافظه. همچنین شامل پلت فرم انتزاعی مستقل برای یونیکد, موضوعات,فایل های نقشه برداری, حافظه مشترک,عبارت منظم, و تنظیمات نرم افزار و کاربر می باشد .

ماژول QtGui : شامل اکثر کلاس های GUI است .

ماژول QtNetwork این ماژول شامل کلاس‌هایی برای ساخت برنامه‌های سمت سرور یا کلاینت (سرویس دهنده و سرویس گیرنده) بر پایه پروتکل‌های TCP یا UDP می باشد. همچنین این بخش شمال کلاس‌های کلاینت FTP، HTTP و همچنین جستجوی DNS می باشد.

ماژول QtOpenGLاین ماژول امکان ایجاد و کار بر روی تصاویر سه بعدی با استفاده از اپن جی ال را فراهم می کند.

 

ماژول QtScript با استفاده از این ماژول برنامه‌های نوشته شده قادر به اجرا اسکریپت‌های جاوا خواهند بود. در حقیقت با استفاده از این روش امکان توسعه و اسکریپت نویسی برای کاربران فراهم می شود.

 

ماژول QtSqlوظیفه این ماژول ایجاد ارتباط با پایگاه داده‌های مبتنی بر SQL می باشد. همچنین این ماژول شامل مدیر دیتابیس SQLite می باشد.

ماژول QtSvgاین ماژول شامل توابعی برای نمایش فایل‌هایی با فرمت SVG یا Scalable Vector Graphics است.

 

ماژول QtTestاین ماژول شامل توابعی برای اعمال تست بر روی اجزا برنامه نوشته شده با پایتون و کیوتی می باشد.

 

ماژول QtXmlاین ماژول شامل کلاس‌هایی می باشد که رابط‌های SAX و DOM را برای تجزیه کننده XML کیوتی فراهم می کنند.

 

ماژول QtAssistantبا استفاده از این ماژول می توان نرم افزار Qt Assistant را در برنامه نوشته شده با پایتون و کیوتی درونی سازی کرده و در نتیجه مستندات برنامه را به همراه آن و بدون نیاز به ایجاد بخشی جداگانه در خود برنامه درونی سازی نمود.

 

ماژول QtDesignerتوسط این ماژول امکان توسعه طراح کیوتی توسط PyQt فراهم خواهد شد. برای مثال می توان افزونه یا یک عنصر جدید در PyQt ایجاد و از آن همانند سایر اشیا گرافیکی (Widget) در محیط طراح استفاده کرد.

 

ماژول QAXContainerبا استفاده از این ماژول برنامه نوشته شده قادر خواهد بود به اشیا COM و اکتیو ایکس (ActivX) ارتباط برقرار کند.

 

ماژول Qtاین ماژول شامل تمامی موارد ذکر شده در بالا می باشد. با اضافه کردن این ماژول دیگر نیازی نیست برنامه نویس ماژول شامل تابع مورد نیاز خود را بداند. از معایب این روش لود شدن همه فریم ورک کیوتی می باشد که باعث اشغال زیاد حافظه می گردد.

 

ماژول uicاین ماژول شامل کلاس‌هایی برای کار با فایل‌های ui می باشد که توسط طراح (Designer) کیوتی ایجاد می گردد، می باشد.

همچنین از پای کیوت شامل ابزار سودمندی هست که باعث سهولت برنامه نویسی می شود در زیر مهم ترین و پرکاربرد ترین این ابزار آمده است .

Pyuic4 معادل ابزار uic می باشد و بر گرفته از عبارت Python User Interface Compiler v4 می باشد. این ابزار فایل‌های رابط گرافیکی ایجاد شده توسط ابزار Qt Designer را به سورس کد پایتون تبدیل می کند.

Pyrcc4 معادل rcc فریم ورک کیوتی و بر گرفته از عبارت Python Resource Compiler v4 می باشد. توسط این ابزار امکان تبدیل فایل‌های منبع (resource) به سورس پایتون فراهم می شود. با استفاده از این ابزار می توان فایل‌هایی چون عکس، آیکن یا هر فایل دلخواه را به سورس پایتون تبدیل و در برنامه یا فایل اجرایی مستقل (مثلاً exe در ویندوز) درونی سازی نمود.

Pylupdate4 معادل lupdate است و برای ایجاد یا بروز رسانی فایل لغات برنامه مورد استفاده قرار می گیرد. با استفاده از این ابزار می توان فایل ts ایجاد و سپس با استفاده از نرم افزاری چون Qt Linguist آنها را ترجمه و در برنامه استفاده کرد. این ابزار روند توسعه برنامه‌های چند زبانه را بسیار آسان می کند.

 

منابع این قسمت :

https://wiki.python.org/moin/PyQt

http://qt-jambi.org/

https://qt-project.org

http://mtux.wordpress.com/

http://en.wikipedia.org/wiki/Qt_(software)

پست های مرتبط

لینک کوتاه: http://GMozafarian.ir/n6BLo
؟cC++ FrameworkFrameworkjambilinuxpyQtqQScintilaQtQt AndroidQt Embedded LinuxQT FrameworkQt-ProjectQt-WincetWhat is Qtآموزشتاریخچهتاریخچه Qtچرا Qtچرا فریم ورکچرا کیوتچیست ؟زبانفریم ورککتابخانهکتابخانه C++کیو تیکیوتکیوت چیست ؟کیوتیگ.ممعرفی

گشتاسب مظفریان گشتاسب مظفریان • آذر ۲۰, ۱۳۹۳


پست‌های قبلی

پست‌های بعدی

Comments

  1. علی فلاح شهریور ۶, ۱۳۹۵ - ۷:۵۲ ق.ظ Reply

    سلام
    ممنون
    خیلی خوب بود

پاسخ دهید

Your email address will not be published / Required fields are marked *