مقدمه کیوت و کاربرد آن

1395/9/14 آرام درخشانی 7514

سلام
آرام درخشانی هستم با آموزش کیوت(Qt) در خدمتتون هستم.
مقدمه و طرح سوال:
لابد شما هم گاهی پروژه‌هایی بهتون پیشنهاد شده که کارفرما ازتون خواسته «یک برنامه» رو برای چندین سیستم عامل بنویسین؛ مثلا در حوزه موبایل، هم برای اندروید و هم برای آیفون و هم برای ویندوز فون – و برای دسکتاپ هم برای ویندوز هم برای لینوکس کار بکنه. یک برنامه‌ی واحد در چند سیستم عامل! راه‌ حل شما بعنوان یک مهندس نرم‌افزار یا IT چیست؟
خب اگه سرانگشتی یه حسابی بکنیم میبینیم که اگر برای هر سیستم عامل از تکنولوژی‌های خاص اون استفاده کنیم، هزینه‌ی تولید برنامه‌مون ضربدر تعداد سیستم عامل‌ها میشه. یعنی یه برنامه‌ی 100 میلیون تومانی برای 4 سیستم‌عامل در بهترین حالت 400 میلیون هزینه‌ی پیاده‌سازی بر می‌داره. آیا به صرفه است؟ چطوری پروژه رو به‌ لحاظ اقتصادی برای کارفرما توجیه بکنیم؟
حالا فرضا پروژه رو برای کارفرما توجیه کردیم ، تا اینجا 400 میلیون تومان هزینه ی تحلیل و طراحی و پیاده سازی(Analyze to implementation) شده. فرض میکنیم پروژه رو لانچ کردیم و تحویل دادیم و پول رو هم گرفتیم، حالا میرسیم به فاز نگهداری(Maintenance). برای این فاز چه چیزهایی دم دست داریم و چه چیزهایی نیاز داریم؟ 1 پلن طراحی داریم،‌ با 4  تا پیاده‌سازی متفاوت در 4  پلتفرم متفاوت. طبیعتا به یک(واحد) آنالیزور و طراح، و به 4 (واحد) پیاده‌ساز و برنامه نویس نیاز داریم تا بتونن این 4‌ تا پلتفرم رو مرتبا پشتیبانی کنند. یعنی آپدیت، رفع اشکال، سازگاری، تغییر ظاهر و ...
هزینه چقدر می‌شه؟! خدا داند...
راه‌ حل:
فکر کنم شما هم به عمق فاجعه پی بردید! راه حل جایگزین چی میتونه باشه؟ اینجاست که در حالی که غمگین و افسرده به افق چشم دوخته ایم، مردی از سرزمین خورشید با اسب سفید و شنل سبز براقش[!!] پیتکو پیتکو کنان به سمت ما می‌آید!
-  سلام من کیوت هستم!
* ححهههههههه (تعجب نکنید صدای اسبشه)
-  شما؟
-  من راه حل رویایی شما هستم! همونی که دنبالش میگردی. کم کم منو بیشتر میشناسی!
-  کارت چیه؟ کجا درس خوندی؟ مدرکت چیه؟
-  اونا رو ولش کن! من یه کاغذ جادویی و یه چوب سحرآمیز دارم که اگه کدت روی اون کاغذ بنویسی با یه بار تکون دادن چوب سحرآمیز میتونم هر چند تا خروجی که دلت بخواد برات بگیرم! تازه فایل اجراییم بهت میدم!
-  واووووو! چه شگفت ناک آلود و محیلرالعقول کنندگی!!  خب خب دیگه چیا بلدی؟!
-  همممم...همونطور که تو نگفتی]![ این فقط یکی از هنرهامه! تو بخچه‌م خیلی چیزای دیگه هم دارم که فعلا رو نمی کنم. بستگی داره معامله‌مون بشه یا نه...
-  عاخه...
بدین ترتیب داستان ما و کیوت شروع میشه...به دنیای چند سکویی(Cross-Platform) خوش آمدید!
تعریف و معرفی کیوت:
کیوت(برخی دوست دارن کیوتی بخونن) یک فریمورک چندسکویی مهیج است که بطور گسترده‌ای برای تولید اپلیکیشن‌ها و برنامه‌های کاربردی و سیستمی مورد استفاده قرار میگیرد.
فریمورک چیست؟ در یک تعریف ساده، فریمورک به یک چارچوب کاری یا محیط برنامه نویسی گفته میشه که علاوه بر این که کلاس‌ها و توابع متعدد و مختلف رو برای راحتی کار و پرهیز از دوباره کاری در اختیارتوسعه دهنده قرار میده، یک سری اصول کلی رو هم وضع میکنه که برای تولید برنامه باید از اون اصول پیروی کرد. به فرض مثال Laravel در زبان PHP یک فریمورک است Bootstrap  در CSS یا Backbone، AngularJS  و jQuery در زبان JavaScript.
 Qt هم یک فریمورک برای زبان C++ هست.
توسط کیوت میتوانید برنامه‌هایی بسازید که دستگا‌ه‌های مختلف را بهم وصل کند، در هر دستگاه ظاهرش متناسب با آن دستگاه خاص باشد(هم Responsive و هم Native) ، در عین حال یکدست و یکپارچه باشد و خیالتان از این بابت راحت باشد که هر وقت بخواهید روی هر سیستم عاملی اجرا می شود!
+ علاوه بر خاصیت چند سکویی بودن مزایای و امکانات بسیار بسیار زیاد دیگری نیز دارد که در جلسه آینده ازشان پرده برخواهیم داشت
جالبه نه؟! ما هم در این سری آموزش ها میخواهیم چنان کنیم! یعنی یاد بگیریم که برنامه‌های قدرتمندی بسازیم که روی هر پلتفرمی بدرستی و به زیبایی اجرا بشه و فقط با نوشتن یکبار کد، برای همه ی سیستم‌عامل‌ها از آن خروجی بگیریم.

بد نیست نگاهی به نمونه برنامه‌هایی که با کیوت نوشته شدن بیندازیم:
* Telegram Desktop  (بله همین تلگرام خودمون!)
* Viber Desktop
*  Cisco Packet Tracer
* Wireshark
* VLC Player
*  KeePass
* Amazon Kindle
* BlackBerry 10
* Calibre (software)
* Mathematica
* Marbel
* Spotify
* VirtualBox
* WPS Office
و...

* لوازم کار با کیوت؟
چه چیزهایی لازمه بدانیم تا بر روی شانه‌های این غول سوار بشیم و بتونیم ازش استفاده کنیم؟
1-  Qt Framework Fundamentals
2-  C++
a.  OOP
b.  Pointers
c.  Vectors
d.  Lists
3-  Design Patterns
4-  MVC
5-  JS/CSS/HTML/XML
6-  و...

چی؟! جاوا اسکریپت و CSS و HTML هم؟! بله. البته جزو واجبات نیست اما محض اطلاع خوبه بدونیم که کیوت تمهیداتی فراهم کرده که بتونیم از قدرت این سه ابزار دنیای وب هم استفاده کنیم! یعنی در داخل کد‌های C++ تون میتونید از:
-  HTML برای تعیین ساختار نمایش متن ( Bold- H1-H2-…H6 – P و...)
-  CSS برای تعیین فرمت و استایل نمایش متون و اشیاء ظاهری (رنگ، حجم، فواصل، حاشیه، پس زمینه و ...)
-  JS در QML بعنوان یک زبان اسکریپتی برای نوشتن برنامه‌های با ظاهر مدرن و زیبا
-  XML برای تنظیم چینش کنترل‌ها روی صفحه و تعیین خواص و ویژگی های آنها در برنامه‌های GUI

*‌ نکات:
•  برای کار کردن با کیوت نیاز دارید که موارد 1 تا 5 را حتما مسلط بشید.
•  لازم نیست نگران باشید. در حین آموزش هر جا به موضوعات ضروری 1 تا 8 نیاز پیدا کردیم مرور خواهیم کرد و با هم پیش خواهیم رفت.
•  برای کار با کیوت ضرورتی ندارد که به C++ محدود بشویم میتوانیم از زبان‌های دیگری مثل پایتون و روبی هم استفاده کنیم اما این زبان ها در کیوت هنوز به اندازه‌ی C++ مورد پوشش و حمایت نیستند.
سرفصل ها:
سرفصل‌هایی که در این سری آموزش با هم خواهیم گذراند به شرح زیر است:
1-  مقدمات لازم برای فهم کیوت
2-  ساختار IDE کیوت یا QtCreator
3-  کار با المنت‌ها و ویجت ها در محیط کیوت
4-  یادآوری مباحث مهم از C++
5-  شروع کار با کیوت
a.  برنامه‌های کنسول
b.  برنامه‌های GUI
c.  برنامه‌های QML و QtQuick
d.  خروجی برای پلتفرم اندروید
e.  خروجی برای پلتفرم iOS
f.  خروجی برای پلتفرم Linux
6-  Syntax  برنامه‌های QtQuick
7-  معماری MVC
8-  انیمیشن در QtQuick
9-  ارتباط QML و C++
10-  کار با شبکه
11- کار با JavaScript
12- ارتباط C++ و QML
13- نوشتن یک برنامه با QtQuick
14- نوشتن یک بازی با QtQuick  یا Canvas (اگر وقت داشته باشیم)
15- گرفتن خروجی برای پلتفرم‌های اندروید و iOS
16-  معرفی منابع

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

کلمات کلیدی