مهندس موفق الکترونیک

برنامه نویسی با کیوت یا Qt

Qt چیست ؟

کیوت یا Qt  مجموعه‌ای از کتابخانه‌ها و هدرهای نوشته‌شده به زبان ++C است که به برنامه‌نویسان امکان توسعه آسان نرم‌افزارهای کاربردی را می‌دهد.

نرم‌افزارهای نوشته شده با  QT   با استفاده از یک کامپایلر زبان ++C برای طیف وسیعی از سیستم‌عامل‌ها از جمله  لینوکس ، ویندوز، ویندوز CE، مک‌اواس و …همگردانی شوند. یا بعبارت ساده تر با کمک QT می‌توان نرم‌افزارهایی که با تغییرات کم یا بدون تغییرات قابل اجرا روی سیستم‌عامل‌های مختلف  را طراحی و برنامه‌نویسی نمود.

برنامه نویسی با کیوت یا Qt

کیوت به تعریفی دیگر

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

Qt یک فریم ورک مولتی پلتفرم برای توسعه نرم افزار می باشد که اکثرا برای ایجاد برنامه هایی با رابط کاربری (GUI) مورد استفاده قرار می گیرد .اما پس از نسخه ۴ امکان ایجاد برنامه های متنی نیز فراهم شده است .

مولتی پلتفرم بودن یعنی چی ؟

تمامی API ها و توابع موجود در این نسخه های مختلف بدون در نظر گرفتن سیتسم عامل و محیطی که در آن اجرا می شوند یکسان می باشد . برای مثال تمامی توابع و روشهای کار با فایل ها ، چند نخی (Threading) ، مدیریت پردازش ها (Process handling) ، پایگاه داده و … دقیقا یکسان می باشند .

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

مولتی پلتفرم بودن کیوت Qt

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

هدف ها و توانایی های کیوت Qt

Qt برای توسعه برنامه های کاربردی چند پلتفرمی و رابط های کاربری گرافیکی (GUI ها) مورد استفاده قرار می گیرد با این وجود برنامه های بدون رابط کاربری گرافیکی مانند ابزار های Command Line و یا کنسول سرور ها را نیز می توان به کمک آن توسعه داد. مثالی از یک برنامه بدون رابط کاربری گرافیکی که با Qt توسعه داده شده است فریم ورک تحت وب Cutelyst می باشد. برنامه های دارای رابط کاربری گرافیکی که با Qt توسعه داده شده اند می توانند رابط کاربری مشابه حالت Native داشته باشند که در این صورت Qt در دسته ابزارهای ویجت قرار می گیرد.

در مورد تونایی های کیوت صحبت کردیم ، توصیه میکنم فیلم زیر را در مورد Data Visualization ببینید که قدرت Qt 3Dرا به رخ میکشه.

موتور تولید اشیا و پنجره ها در کیوت

Qt از موتوری درونی و خاص خود برای ایجاد اشیا و پنجره ها استفاده می کند . بنابراین امکان اجرا بر روی چندین سیستم عامل و نیز استفاده از اشایی پیشرفته براحتی ممکن می باشد . در عین حال کیوتی در هر سیستم عامل برنامه هایی درست همانند ظاهر همان سیستم عامل یا اصطلاحا محلی (native) تولید می کند .

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

مطلب پیشنهادی:  سیگنال Signal و اسلات Slot در کیوت

شرکت توسعه دهنده کیوت

این ابزار توسط یک شرکت نروژی به نام Trolltech ایجاد گردیده و با سرعت بسیاری در حال توسعه می باشد .

نرم افزار های مهم نوشته شده با QT

نرم افزار های بسیاری چون Opera, Google Earth, Skype, Qtopia و … نیز توسط این ابزار ایجاد گردیده اند . و همچنین شرکت هایDreamWorks، Lucasfilm، Panasonic ، Philips، Samsung، Siemens، Volvo،Walt Disney، Blizzard Entertainment، Electronic Arts و AMD از این پلتفرم استفاده میکنند.

استفاده در تولید سخت‌افزار

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

زبان برنامه نویسی در QT

زبان برنامه نویسی در Qt بصورت پیش فرض ++C می باشد . امکان برنامه نویسی با زبانهای دیگر چون پایتون ، رابی ، PHP ، پرل ، پاسکال و حتی #C و جاوا نیز در Qt فراهم می باشد ! همانطور که گفته شد کیوتی تقریبا در اکثر سیستم عامل های موجود چون لینوکس ، ویندوز ، مک و سیستم های خاصی چون PDA ها و Smartphone ها قابل اجراست .

برنامه‌نویسی موبایل

برنامه‌نویسی برای دستگاه‌های موبایل از جمله Android و iOS با استفاده از نرم‌افزار Qt Creator امکان‌پذیر است. کدهای نوشته شده برای تولید یک نرم‌افزار موبایل یکسان ولی محیط‌های کامپایل آن متفاوت هستند. در سیستم‌عامل‌های گوناگون ممکن است به ابزارهای جانبی مختلفی برای کامپایل پروژه نیاز داشته باشید. برای مثال در iOS به XCode در کنار Qt Creator و در Android به The Android SDK Tools, The Android NDK, Java SE Development Kit نیاز خواهد بود.

کارایی برنامه‌های نوشته شده با Qt

تمامی فریم‌ورک‌هایی که به عنوان یک لایه میان کدهای شما و کدهای Native سیستم‌عامل عمل می‌کنند، سبب کاهش سرعت و افزایش مصرف حافظه می‌شوند. این مقدار در Qt به دلیل چندین سال توسعه و داشتن میلیون‌ها کاربر و بهبودهای گسترده، به مقدار حداقل رسیده است. برنامه‌های تولید شده با Qt اگر به خوبی بهینه‌سازی شوند، سریع و با مصرف حافظه‌ی کم خواهند بود.

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

استفاده از افزونه‌های مختلف در تولید نرم‌افزارهای Qt یکی از عواملی است که می‌تواند اثر مستقیم و زیادی روی سرعت و مصرف حافظه‌ی نرم‌افزار تولیدشده بر جای بگذارد.

کتابخانه های QT

کتابخانه های (library) این فریم ورک که صدها کتابخانه کامل به زبان ++C می باشد در حقیقت شالوده و پایه فریم ورک را تشکیل می دهد . این کتابخانه ها شامل مواردی چون کتابخانه های GUI ، پایگاه داده ، شبکه ، XML ، OpenGL درونی سازی شده ، بین المللی کردن (internationalization) و … می باشد .

سیگنال ها و اسلات ها در کیوت Qt

یک واحد زبانی مورد استفاده در Qt که بین اشیا مختلف ارتباط برقرار می کند. این کار اجرای  observer pattern را راحت می کند و در عین حال از ایجاد کد  boilerplate جلوگیری می کند. مفهوم کلی به این صورت است که ویجت های رابط کاربری گرافیکی می توانند سیگنال هایی را ارسال کنند که حاوی اطلاعات مربوط به رویداد هاست که این اطلاعات توسط کنترل های دیگر و به کمک توابعی ویژه که به آن ها شکاف ها گفته می شود دریافت می شوند .

کامپایلر Meta Object

کامپایلر Meta Object که به اختصار moc خوانده می شود ابزاری است که با استفاده منابع یک نرم افزار Qt اجرا می شود.این ابزار برخی از ماکرو های کد C++ را به عنوان یادداشت ترجمه می کند و از آن برای تولید کد افزوده C++ به همراه اطلاعات meta در مورد کلاس های به کار رفته در برنامه، استفاده می کند. این اطلاعات meta توسط Qt مورد استفاده قرار می گیرند تا تا ویژگی های برنامه نویسی را که به صورت native در C++ موجود نیست در اختیار کاربر بگذارند. این ویژگی ها عبارتند از: سیگنال ها و شکاف ها،درون گرایی و فراخوانی توابع به صورت غیر هم زمان.

مطلب پیشنهادی:  اشاره‌گر this در ++C

Qt Quick چیست ؟

Qt همچنین فریم ورک  Qt Quick را نیز ارائه می کند که شامل یک زبان اسکریپت نویسی و به عبارتی یک زبان مدل سازی به نام QML است که امکان استفاده از جاوا اسکریپت برای بخش منطقی را فراهم می کند.

Qt Creator چیست ؟

Qt Creator یک IDE چند پلتفرمی برای C++ و QML به شمار می رود.

Qt Designer چیست ؟

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

قرار داد نام گذاری

اکثر نرم افزار های کاربردی Qt با حرف Q بزرگ (برای مثال QDevelop) شروع می‌شوند. مشابه این قرار داد نام گذاری برای نرم افزار های نوشته شده تحت میزکار کی‌دی‌ای وجود دارد که در موارد متعددی برای برنامه‌های نوشته‌شده حول تولکیت Qt (البته استفاده از حرف Q به جای حرف K کاربرد دارد).

Qt Linguist چیست ؟

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

ابزار qmake چیست ؟

ابزار qmake را نیز ارائه می کند که یک ابزار تولید کد برای نسخه های مختلف نرم افزار و به صورت چند پلتفرمی می باشد. این ابزار تولید Makefile ها برای توسعه نرم افزار ها بر روی پلتفرم های متفاوت را به صورت خودکار انجام می دهد. بدون چنین ابزاری، باید برای هر پلتفرم یک Makefile جداگانه نوشته شود پس این ابزار برای کاهش تفاوت های بین پلتفرم های مختلف بسیار مفید است.

Qt Assistant چیست ؟

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

ماژول های نرم افزار کیوت Qt

از Qt 4.0 به بعد، این چارچوب به ماژول های جدا تفکیک شد. در Qt 5.0 معماری برنامه حتی بیشتر از قبل بر پایه ماژول ها قرار گرفت. در حال حاضر Qt به ماژول های ضروری(essential) و ماژول ها افزونه ای (add-non)تقسیم می شود.

ماژول توضیحات
Qt Core تنها ماژول ضروری Qt که حاویه دسته هایی است که توسط سایر ماژول ها مورد استفاده قرار می گیرند. این دسته ها شامل سیستمmeta object- هم زمانی و threading، محفظه ها، سیستم رویداد ها، پلاگین ها و امکانات مربوط به ورودی و خروجی می شود.
Qt GUI ماژول مرکزی رابط کاربری گرافیکی. در Qt 5 این ماژول به OpenGL وابسته است اما دیگر شامل هیچ دسته ای از ویجت ها نمی شود.
Qt Widgets حاوی دسته هایی برای نرم افزار های کاربردی کلاسیک دارای رابط های کاربری گرافیکی بر پایه ویجت ها و دسته های QsceneGraph. در Qt 5 از Qt GUI جدا شد. Melec.ir
Qt QML ماژولی برای زبان های QML و JavaScript
Qt Quick ماژول نرم افزار های کاربردی دارای رابط کاربری گرافیکی که با استفاده از QML2 نوشته شده اند
Qt Quick Controls کنترل های شبیه به ویجت برای Qt Quick که برای نرم افزار های دسکتاپ در نظر گرفته شده است
Qt Quick Layouts طرحی برای مرتب کردن اجزا در Qt Quick
Qt Network لایه انتزاعی شبکه به همراه پشتیبانی از TCP, UDP, HTTP, SSL و از نسخه 5.3 به بعد با پشتیبانی از SPDY
Qt Multimedia دسته هایی برای کارایی های صوتی، تصویری، رادیویی و دوربین
Qt Multimedia Widgets ویجت های Qt Multimedia
Qt SQL حاوی دسته هایی برای یکپارچه سازی بانک اطلاعاتی با استفاده از SQL
Qt WebEngine مجموعه جدیدی از API های Qt Widget و QML webview بر پایه Chromium
Qt Test دسته هایی برای تست واحد نرم افزار ها و کتابخانه های Qt
مطلب پیشنهادی:  نکات برنامه نویسی پیشرفته C و ++C - اشاره گر های تابعی، typedef ، const

Qt 3D Studio چیست ؟

در مورد Qt 3D Studio باید فیلم زیر را ببینید  🙂

کیوت وسیع و گسترده

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

انواع عرضه‌شده

  1.  برای خانواده Unix / Linux
  2. برای مک اواس ده
  3.  برای ویندوز
  4. کیوت برای اندروید
  5. کیوت برای آی‌اواس
  6. Qt Embedded
  7. Qt WinCE
  8. Qt Extended  برای سیستم‌عامل لینوکس نسخه وسائل همراه

مجوزهای کیوت

Qt در دو نسخه منبع باز و تجاری عرضه می‌شود، نسخه تجاری آزاد برای هر نوع توسعه نرم افزار است. در حالی که نسخه منبع بار محدود به توسعه نرم افزار در قالب مجوز های جی‌پی‌ال و QPL است. البته بعد از خرید Qt توسط شرکت نوکیا و از نسخه 4.5 به بعد امکان توسعه نرم افزار در قالب مجوز ال‌جی‌پی‌ال نیز به مجوز های نسخه منبع باز اضافه شده است.

محیط‌های توسعه کیوت

محیط‌های توسعه مختلفی برای تولکیت Qt وجود دارد که اکثراً توسط برنامه‌نویسان علاقمند به این تولکیت ایجاد شده‌اند. جدیدترین محیط توسعه این تولکیت Qt Creator نام دارد که توسط صاحب جدید آن یعنی نوکیا ایجاد شده‌است. از دیگر محیط‌های توسعه مورد حمایت نوکیا می‌توان به eclipse اشاره کرد که با استفاده از افزونه‌ای قادر است که محیطی برای برنامه‌نویسی Qt باشد.
دیگر محیط‌های توسعه Qt
QDevelop
edyuk

برنامه‌نویسی Qt در ویندوز و لینوکس

برنامه‌نویسی Qt در ویندوز علاوه بر نرم‌افزار Qt Creator با نصب افزونه‌ Qt روی Visual Studio نیز امکان‌پذیر است. همچنین محیط‌های توسعه‌ی دیگری مانند Eclipse و Monkey Studio توسط گروه‌ها و افراد مختلف برای برنامه‌نویسی Qt در ویندوز و لینوکس توسعه یافته‌اند.

  • نکات مهم : یادگیری کیوتی آسان است ، Qt بسیار قدرتمند ، کیوتی اپن سورس و آزاد است.
  • نکته مهم کیوت دارای کلاس های مختلف  برای کار با واسط گرافیکی، ابزارهای پایگاه‌داده، شبکه و … است.
  • نکته مهم  حمل نرم‌افزار نوشته شده بدون تغییر در متن کد نوشته شده امکان‌پذیر است.
  • نکته مهم از کیوت در زبان‌های برنامه‌نویسی متعددی مانند سی++ و جاوا و پایتون می‌توان استفاده‌کرد.
  • نکته مهم Qt در دو نگارش رایگان و تجاری ارائه می‌شود.
  • نکته مهم همچنین کیوتی ویژگی های بسیار خوبی برای زبان فارسی و چینش راست به چپ فراهم می کند . این ویژگی از درونی ترین کلاس ها و هسته کیوتی فراهم می شود . بنابراین تمامی عناصر کاملا منتطبق با استاندارد های مورد نیاز بوده و بخوبی متون راست به چپ فارسی را نمایش می دهند . انتخاب و استفاده از این ویژگی هم بسیار آسان می باشد.

منابع : سایت رسمی Qt ، ویکی پدیا ، مدیاسافت ، انجمن برنامه نویس ،روکاوب ، KAMALAN

برای شروع کار میتوانید از سایت رسمی Qt یا آموزش‌های Qtما در زیر این نوشته استفاده کنید.

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش                    جلسه بعدی >>

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

11 دیدگاه

  1. salam vaght be kheir
    Lotfan file PDFe har jalase ra niz dar akhare jalade baraye download gharar dahid.

    ba sepas

  2. سلام
    آیا می شود از qt برای ساخت برنامه هایی استفاده کرده که بتوان مثلا برای ویندوز برنامه نوشت و اطلاعات مدارمون را نمایش بده یا تحلیل کند اگر می شود کمی توضیح بدهید یا منبع معرفی کنید اگر نمی شود چگونه می توان این کار را کرد ممنون

    • میلاد جهاندیده

      سلام، بله میتوان نوشت. البته نه فقط با فریم ورک Qt با زبان ها و محیط های برنامه نویسی دیگر هم میتوان این کار را کرد. ولی Qt در طراحی UI شهرت خاصی داره. برای نمایش اطلاعات مثلا نمایشگر حرفه ای سرعت خودرو و نمایشگر های Embedded از Qt زیاد دیدم استفاده میکنن. و البته در محیط های صنعتی از LabVIEW هم زیاد استفاده میشه ولی خوبی Qt رایگان بودن بیشتر امکانات آن است. و برای تحلیل هم همه ی زبان ها معمولا میتونن ولی Qt چون ++C را داره سرعتش بیشتره برای تحلیل. حالا چطوری شروع کنید را در مرحله اول باید ++C و Qt را یادبگیرید و اگر برای نمایش اطلاعات و حرفه ای ترش UI دنبالش هستین شاید لازم باشه QML هم یادبگیرین یا پایتون و بعد فقط کافیه یک نگاهی به کتابخونه ارتباط USB یا ساده تر سریال کیوت نگاهی بندازید و حتی میتونید اترنت را هم داشته باشید…مقالات اولیه سایت را بخونید و یکسری فیلم آموزشی فارسی هم توی آپارات دیدم هستن سرچ کنید ببینید. بازم منبع خوبی بود براتون میفرستم. من کیوت کار نیستم ولی سوالی بود در خدمتون هستم.

  3. برنامه ای دارم که چند سال قبل با زبان C++ و با Qt برای اندروید نوشته شده.
    اما نرم افزار بر روی برخی گوشی ها خوب نصب نمیشه به لحاظ ابعادی … و رزولوشن.
    دسترسی به کسی که کد رو نوشته ندارم و میخواستم این مشکل حل کنم.
    ممنونم اگر کمکی از دستتون بر بیاد.

    • میلاد جهاندیده

      سلام، شخصا برای یک پروژه ای کوچک کیوت را یادگرفتم و خیلی وقته باهاش کار نکردم و کلا هم وقت نمیکنم پروژه انجام بدم ولی بازم برای چنین موردی بهتره از یک نیروی شرکتی یا از بچه های پروژه کار کمک بگیرید. بازم کسی بود براتون شمارشو ایمیل میکنم. موفق باشید.

  4. محمد حسن خیراندیش

    عالیییییییییییییییییییی
    فقط یک سوال برای من پیش اومد این بود که میدونیم qt هم از پایتون و هم از c++ پشتیبانی میکند آیا میشه این دو زبان را در این برنامه تلفیق کرد؟

  5. سلام
    در صورت تمایل
    برای انجام یک پروژه برنامه نویسی صنعتی با من تماس بگیرید.
    c++,qt,pcl,opencv