Qt
از PyLearn.com، دانشنامهٔ آزاد.
| نکته ها و ترفند ها • ماژول ها و ابزار وابسته • نمونه پروژه و برنامه • پرسش و پاسخ |
[ویرایش] Qt چیست ؟
Qt یک فریم ورک مولتی پلتفرم برای توسعه نرم افزار می باشد که اکثرا برای ایجاد برنامه هایی با رابط کاربری (GUI) مورد استفاده قرار می گیرد . اما پس از نسخه ۴ امکان ایجاد برنامه های متنی نیز فراهم شده است . بیشترین استفاده از کیوتی در رابط گرافیکی KDE بوده است که یکی از مهمترین محیط های گرافیکی لینوکس می باشد . نرم افزار های بسیاری چون Opera, Google Earth, Skype, Qtopia و ... نیز توسط این ابزار ایجاد گردیده اند . این ابزار توسط یک شرکت نروژی به نام Trolltech ایجاد گردیده و با سرعت بسیاری در حال توسعه می باشد .
زبان برنامه نویسی در Qt بصورت پیش فرض ++C می باشد . تقریبا این ابزار را می توان با محیط ++VC مقایسه نمود . اما امکان برنامه نویسی با زبانهای دیگر چون پایتون ، رابی ، PHP ، پرل ، پاسکال و حتی #C و جاوا نیز در Qt فراهم می باشد ! همانطور که گفته شد کیوتی تقریبا در اکثر سیستم عامل های موجود چون لینوکس ، ویندوز ، مک و سیستم های خاصی چون PDA ها و Smartphone ها قابل اجراست .
Qt از موتوری درونی و خاص خود برای ایجاد اشیا و پنجره ها استفاده می کند . بنابراین امکان اجرا بر روی چندین سیستم عامل و نیز استفاده از اشایی پیشرفته براحتی ممکن می باشد . در عین حال کیوتی در هر سیستم عامل برنامه هایی درست همانند ظاهر همان سیستم عامل یا اصطلاحا محلی (native) تولید می کند .
کیوتی اسمی کلی هست و شامل تمام ابزار و کتابخانه ها و طراح می شود . در حقیقت محیط و فریم ورک Qt شامل قسمت های مختلفی می باشد . هسته اصلی و داخلی آن شامل کتابخانه هایی بسیار گسترده در اکثرا زمینه های موجود چون پایگاه داده ، شبکه ، سیستم فایل ، اینترنت و ... می باشد . همچنین کیوتی شامل طراحی (Designer) گرافیکی و بسیار قدرتمند و ساده می باشد که برنامه نویسی و ایجاد پنجره ها را بسیار آسان و سریع قابل پیاده سازی می کند .
[ویرایش] چرا Qt ؟
از مهمترین موارد و مزیت های کیوتی می توان به موارد زیر اشاره کرد :
[ویرایش] Qt بسیار وسیع و گسترده است
کیوتی یک فریم ورک بسیار گسترده و غنی می باشد که شامل ویژگی و توانایی هاو ابزار های بسیاری می باشد که امکان ایجاد برنامه هایی سمت سرور و کلاینت با کارایی بسیار زیاد و مولتی پلتفرم را فراهم می آورد .
[ویرایش] کتابخانه های غنی و گسترده
کتابخانه های (library) این فریم ورک که بالغ بر ۴۰۰ کتابخانه کامل به زبان ++C می باشد در حقیقت شالوده و پایه فریم ورک را تشکیل می دهد . این کتابخانه ها شامل مواردی چون کتابخانه های GUI ، پایگاه داده ، شبکه ، XML ، OpenGL درونی سازی شده ، بین المللی کردن (internationalization) و ... می باشد .
[ویرایش] طراح گرافیکی
Qt Designer نام یک طراح گرافیکی بسیار قدرتمند می باشد که امکان ایجاد فرم ها و لایه ها بصورت سریع و آسان با استفاده از نما و گرافیکی مناسب را در اکثر سیستم عامل ها فراهم می کند .
[ویرایش] بین الملل سازی (internationalization) آسان
Qt Linguist نام ابزار دیگری می باشد که امکان ترجمه و بین الملل سازی را بسیار راحتتر می کند . با استفاده از این ابزار کل سیستم لغات و نوشته های برنامه بصورت جداگانه در فایلی ذخیره می گردند که امکان ترجمه آن بسیار راحت می باشد . بنابراین تیم اصلی فارغ از مشکلات و سختی های کار زمان بری چون ترجمه به زبانهای مختلف وقت بیشتری بر روی توسعه برنامه صرف می کنند . و نیز امکان ترجمه برنامه برای کاربران معمولی که اطلاعات زیادی از روند توسعه و برنامه نویسی ندارند فراهم می شود .
همچنین کیوتی ویژگی های بسیار خوبی برای زبان فارسی و چینش راست به چپ فراهم می کند . این ویژگی از درونی ترین کلاس ها و هسته کیوتی فراهم می شود . بنابراین تمامی عناصر کاملا منتطبق با استاندارد های مورد نیاز بوده و بخوبی متون راست به چپ فارسی را نمایش می دهند . انتخاب و استفاده از این ویژگی هم بسیار آسان می باشد.
[ویرایش] مستندات و راهنمای غنی و کامل
Qt Assistant نام یک مروگر فایل و مستندات می باشد که تغییر و استفاده مجدد از آن امکان پذیر می باشد . برنامه های نوشته شده با Qt می توانند از این ابزار برای نمایش مستندات خود استفاده کنند . بنابراین تهیه و توسعه مستندات برنامه ها بسیار سریعتر و آسان تر خواهد بود .
[ویرایش] Qt مولتی پلتفرم (کراس پلتفرم) می باشد
کیوتی بطور کامل مولتی پلتفرم می باشد . یعنی مستقل از سیستم عامل یا به عبارت دیگر امکان اجرا بر روی محدوده وسیعی از سیستم عامل ها . مطمئنا برنامه های نوشته شده با کیوتی هم مولتی پلتفرم خواهند بود ! چون برای اجرا فقط به کیوتی نیاز دارند . این ویژگی بسیار مهم و با ارزش می باشد . برای مثال برنامه نویس مجموعه ای از API و توابع و نحوه اجرای و استفاده از آنها را یاد می گیرد سپس در هر سیستم عاملی به راحتی می تواند برنامه نویسی کند !
کیوتی و ابزار های آن فعلا در پلتفرم های زیر در دسترس هستند :
Qt/X11 : این نسخه مخصوص سیستم عامل های مبتنی بر یونیکس (Unix) چون لینوکس ، سولاریس (Solaris) و HP-UX ، IRIX و بسیاری سیستم عامل مشتق شده دیگر می باشد .
Qt/Windows : این نسخه مخصوص سیستم عامل مایکروسافت می باشد و از ویندوز ۹۸ تا ویستا (Vista) قابل اجرا و استفاده می باشد .
Qt/Mac : این نسخه نیز مخصوص سیستم عامل مک (Mac OS X) می باشد .
Qtopia Core : این نسخه مخصوص قابل اجرا و استفاده در نسخه خاصی از لینوکس (Embedded Linux) است که می تواند در سخت افزار های خاص بجر کامپیوتر معمولی اجرا شود .
تمامی API ها و توابع موجود در این نسخه های مختلف بدون در نظر گرفتن سیتسم عامل و محیطی که در آن اجرا می شوند یکسان می باشد . برای مثال تمامی توابع و روشهای کار با فایل ها ، چند نخی (Threading) ، مدیریت پردازش ها (Process handling) ، پایگاه داده و ... دقیقا یکسان می باشند .
برنامه های نوشته شده با Qt در تمامی این پلتفرم ها دقیقا همانند یک برنامه معمولی و بومی آن محیط می باشد و از نظر ظاهر هیچ گونه فرقی با سایر برنامه ها ندارد . همچنین برنامه نوشته شده در یک محیط بدون هیچ تغییری بدون مشکل در بقیه پلتفرم ها قابل اجرا هستند . فقط باید در پلتفرم جدید برنامه نوشته شده را دوباره کامپایل و به فایل اجرایی تبدیل کرد . که بدیهی هست در مواقعی که کد و هسته اصلی برنامه با زبانی اسکریپتی چون پایتون نوشته شود حتی نیازی به کامپایل مجدد هم نیست ! و برنامه بصورت مستقیم در همه پلتفرم ها اجرا خواهد شد .
[ویرایش] یادگیری کیوتی آسان است
برنامه نویس کیوتی کافی است طرز کار یک تابع API (توابع مورد نیاز برای دسترسی به کتابخانه ها) را یاد بگیرد . سپس می تواند از آن تابع در همه پلتفرم ها استفاده کند . همچنین توسعه دهندگان کیوتی نهایت تلاش خود را برای حفط سهولت یادگیری و استفاده کرده اند . با توجه به اینکه کیوتی یک نرم افزار آزاد (OpenSource Qt) می باشد توسعه ان بسیار سرعتر و بیشتر مطابق با خواست مصرف کننده می باشد . همچنین این ابزار مستنداتی بسیار غنی و کامل به همراه گروهای و انجمن هایی فعال دارد که بسیار کمک کننده و مفید می باشد .
[ویرایش] Qt بسیار قدرتمند، بی عیب و کارا می باشد !
نرم افزار های تجاری و حرفه ای بسیاری در پلتفرم ها و با ابزار ها و کامپایلر های مختلفی با کیوتی نوشته شده است . بیش از ۴۵۰۰ شرکت معتبر برنامه نویسی در دنیا با استفاده از این ابزار برنامه های خود را تولید می کنند . بنابراین کاملا تست شده و اکثر مشکلات آن مشخص و برطرف شده است . همچنین تمامی موارد مورد نیاز نیز به ان اضافه شده است . و دوباره با توجه به اپن سورس بودن آن این امر بسیار احتتر بوده و هر کسی می تواند در توسعه آن سهیم باشد . برای مثال در سالهای گذشته هزینه بسیاری از طرف دولت برای فارسی سازی و بومی سازی آن و نیز ثبت این تغییرات در نشخه های اصلی کیوتی هزینه شده است ! البته تیم توسعه کیوتی بسیار سخت گیر می باشد و اجازه اضافه شدن هر کد یا تغییری را نمی دهند ! مگر اینکه کارایی و دلیل آن کاملا بحث شده و اثبات شده باشد .
کارایی و سرعت اجرای برنامه های نوشته شده با کیوتی نیز بسیار خوب و در حد برنامه های معمولی موجود در همان پلتفرم می باشد . برنامه های نوشته شده بدون هیچ واسطی اجرا شده و بصورت مستقیم از سخت افزار و منابع استفاده می کنند .
[ویرایش] کیوتی اپن سورس و آزاد است
مهمترین نکته در باره لایسنس کیوتی این است که تمامی ابزار ها در دو لایسنس مختلف عرضه می شوند . یکی تجاری و دیگری غیر تجاری . بحث نرم افزار اپن سورس و ازاد و مزیت های آن که در روند توسعه و استفاده آز آن می گذارد و نیز مواردی چون سهولت ، قدرت ، تنوع ، امنیت و ... را به ارمغان می آورد نیازمند بحثی دیگر و مفصل است . اما از طرفی دیگر این لایسنس دوگانه کیوتی باعث بحث های بسیار بسیار زیاد شد . اما این دوگانه بودن لایسنس خود مزیتی مهم می باشد که هر لایسنس تضمین کننده دیگری هست !
- استفاده از مزیت های جامعه اپن سورس و نرم افزار آزاد برای توسعه بهتر و سریعتر . بنابراین هر کسی می تواند کیوتی را بسته به نیاز خود تغییر و تغییرات اعمال شده را به نسخه های اصلی نیز اضافه کند تا بقیه نیز از آن استفاده کنند .
- اطمینان شرکت ها و برنامه نویسان از جنبه مالی و تجاری تولیدات خود . با استفاده از نسخه تجاری کیوتی هر شرکت و برنامه نویسی می تواند برنامه های نوشته شده خود را با مجوز تجاری و اطمینان خاطر بفروش برساند .
[ویرایش] نصب کیوتی
آخرین نسخه موجود کیوتی و نیز ابزار های وابسته آن Qt 4 می باشد که تغییرات و مزایای بسیاری در آن صورت گرفته است . برخی از این تعییرات عبارتند از :
- امکان درونی سازی و یکپارچه سازی بسیار آسان با Visual Studio .NET
- بهبود کارایی سیستم گرافیکی و روابط کاربر (User Interface)
- حمایت بهبود یافته از چند نخی (Multi-threading)
- حمایت کامل از یونی کد و نیز ترجمه آنی و زمان اجرا و نیز حمایت بیشتر از بومی سازی
- کلاس ها و توابع سریعتر با مصرف حافظه کمتر
- ظاهری قابل انعطاف و مدیریت ساده داده ها با استفاده از ساختار جدید Model-view
- افزایش سرعت کلی و کاهش استفاده از حافظه
- امکان برنامه نویسی متنی بدون ظاهر گرافیکی بمنظور نوشتن برنامه های تحت سرور
انتخاب ما نیز برای این آموزش نسخه ۴ این ابزار می باشد .
[ویرایش] نصب کیوتی در لینوکس
نصب کیوتی و ابزار های وابسته چون طراح (Designer) آن در لینوکس بسیار راحت می باشد . معمولا این ابزار ها نیاز به بسته خاصی ندارند . بسته به نوع سیستم عامل خود می توانید از ابزارهای مدیریت بسته چون apt-get, yum, portage یا ... برای نصب آسان استفاده کنید . نرم افزار های مدیریت بسته ، کیوتی و همه بسته های مورد نیاز را دانلود و نصب می کنند . نرم افزار های مدیریت بسته گرافیکی نیز باعث سهولت بیشتر کار می شوند . موقع نصب لینوکس نیز می توانید این بسته ها رو برای نصب انتخاب کنید . چون تعداد توزیع های لینوکس بسیار زیاد می باشد . هر یک روند نصب ویژه ای دارند و نیز نصب این ابزار بسیار آسان می باشد توضیح دیگری در این مورد داده نمی شود .
[ویرایش] نصب کیوتی در ویندوز
در اولین گام کیوتی را از سایت رسمی آن دانلود کنید . برای مثال ما فایل qt-win-opensource-4.2.3-mingw.exe را که در زمان نوشتن این آموزش اخرین نسخه موجود می باشد را دانلود کرده ایم . نسخه آزاد و رایگان Qt فقط توسط کامپایلر MinGW امکان پذیر است . کیوتی را می توان با ویژال استدیو مایکروسافت هم کامپایل کرد که این ویژگی فقط در نسخه تجاری آن موجود می باشد . MinGw که مخفف Minimalist GNU for Windows می باشد در حقیقت همان کامپایلر معروف GNU یا GCC می باشد که برای اجرا در ویندوز دوباره نویسی شده است . این کامپایلر اپن سورس می باشد که می توانید آنرا از سایت رسمی MinGW دانلود و نصب کنید . البته برای نصب کیوتی نیازی نیست خودمان انرا نصب کنیم . فایل نصاب Qt که یک فایل اجرایی می باشد تمامی مراحل کار را براحتی انجام می دهد . پس از دانلود این فایل آنرا اجرا می کنیم .
مراحل نصب بسیار آسان می باشد . فقط کافی هست در پنجره مربوط به MinGW گزینه مربوط به دانلود و نصب خودکار را انتخاب کنیم . منتظر باشید تا همه بخش های مربوط به نصب و کامپایل خاتمه یابد . اکنون Qt به همراه Qt Designer نصب شده و آماده استفاده می باشد . می توانید از منوی شروع به آن دسترسی داشته باشید .
[ویرایش] استفاده از Qt
[ویرایش] شروع کار با کیوتی
در اولین گام برنامه Qt Designer را اجرا کنید . برای اینکار در ویندوز از زیر شاخه Qt by Trolltech v4.2.3 (OpenSource) منوی شروع Designer را اجرا کنید و در لینوکس یا از طریق منو یا از طریق آیکن برنامه در دسکتاپ و یا با استفاده از محیط متنی برنامه طراح را اجرا کنید . ما برای این آموزش نسخه ویندوزی را انتخاب کرده ایم . چون کیوتی یک ابزار ذاتی لینوکس می باشد استفاده از Qt در لینوکس راحتتر و بسیار شبیه به نوع ویندوزی آن می باشد . برنامه ای شامل قسمت ها و پنجره های مختلف و بصورت جدا ظاهر می گردد . اکثر کاربران تازه کار و نیز ویندوزی با این نحوه چینش پنجره ها مشکل دارند . پس اگر دوست دارید همه پنجره ها به هم چسبیده باشد از منوی Edit سپس User Interface Mode گزینه Docked Window را انتخاب کنید .
در ادامه تک تک پنجره های موجود و موارد استفاده هر یک بیان می شود .
[ویرایش] پنجره اصلی Qt
پنجره اصلی کیوتی شامل تمامی موارد و اعمال مورد نیاز برای ایجاد و تغییر فرم ها و پنجره ها می باشد . موارد موجود در جعبه ابزار و نیز تعدادی از منو ها و زیر منو ها در بخش های بعدی توضیح داده خواهد شد . پنجره اصلی شامل بخشی به نام Widget box یا جعبه اشیا می باشد که تمامی اشیا ، عناصر و لایه های تشکیل دهنده یک پنجره و برنامه گرافیکی مانند کلید ها ، برچسب ها و جعبه ورود متن و ... در آن قرار دارند . هر یک از این عناصر و اشیا را براحتی می توان کشید و روی فرم مربوطه انداخت (drag & drop) . این اشیا در گروهایی بر حسب ویژگی و موارد کاربرد مرتب شده اند که دسترسی به هر یک را آسان تر می کند .
[ویرایش] ویرایشگر صفات
پنجره مهم بعدی Proprty Editor نام دارد . از طریق این پنجره می توانید خصوصیات و صفات هر عنصر و حتی فرمی را به دلخواه تغییر دهید . مواردی چون تغییر نام ، رنگ ، اندازه ، موقعیت و ...
[ویرایش] سایر پنجره ها
طراح کیوتی شامل پنجره های دیگری نیز می باشد که هنگام نوشتن برنامه امکانات بسیار مناسبی را در اختیار قرار می دهند .
- Signal/Slot Editor :
این پنجره امکان مدیریت و ایجاد سیگنال ها و اسلات ها را فراهم می کند . تکنولوژی Signals/Slot یک روش بسیار زیرکانه و کاربردی برای ارتباط عناصر تشکیل دهنده برنامه به هم می باشد . دراین روش یک عنصر سیگنال یا در پیغامی را به یک اسلات یا در حقیقت تابعی که وظیفه پاسخگویی به سیگنال مورد نظر دارد ارسال می شود و اسلات مربوطه با توجه با داده های ورودی و اتفاق افتاده عکس العمل نشان می دهد .
- Action Editor :
توسط این پنجره می توانید Action ها را کنترل و مدیریت کنید یا Action جدیدی را ایجاد کنید . Action ها در حقیقت عناصر تشکیل دهنده منو ها و جعبه ابزار می باشند .
- Object Inspector :
در این پنجره تمامی اشیا و عناصر موجود در فرم بصورت درختی نمایش داده می شوند . می توان هر یک را انتخاب یا والد و فرزند آن راتشخیص داد .
- Resource Editor :
این پنجره امکان ایجاد منابع درونی و مدیریت انها را فراهم می آورد . Qt امکانات و روش هایی را فراهم کرده است که می توان فایل های مورد نیاز پروژه را در فایل اجرایی درونی سازی کرد . استفاده از این روش بسیار آسان می باشد و در ادامه مثالی ذکر خواهد شد . بااستفاده از این روش تمامی فایل های مورد نیاز چون عکس ها ، مستندات و ... در دسترس نبوده و داخل فایل اجرایی قرار می گیرند . قابل ذکر هست که تمامی اعمال چون اضافه کردن عمس به فایل اجرایی و اشتفاده از آن و روش های استفاده شده بر عهده کیوتی می باشد .
[ویرایش] طراحی یک برنامه ساده با طراح Qt
برای مثال ما قصد داریم پنجره ای برای ورود اطلاعات یک دانشجو ایجاد کنیم .
از طریقه منوی فایل New Form را انتخاب کرده و توسط Main Window یک پنجره جدید ایجاد می کنیم . یک پنجره خالی نمایش داده می شود . در حالت کلی ۴ روش برای ویرایش یک پنجره و فرم در دسترس می باشد .
برای ایجاد عناصر جدید در روی فرم حتما باید در حالت Edit Widget باشیم . برای رفتم به این حالت از طریق منوی Edit گزینه Edit Widget را انتخاب می کنیم . حال ساخت فرم را بوسیله اضافه کردن اشیا جدیدی چون برچسب ها و جعبه های ورود اطلاعات و کلید ها ادامه می دهیم . برای این کار کافی است هر عنصر را کشیده و در محل دلخواه رها کنید .
سپس دو Spacer به فرم اضافه می کنیم . Spacer ها اشیا خاصی هستند که فقط در صفحه بندی و آرایش فرم و مخصوصا در زمان تغییر اندازه مورد استفاده قرار می گیرند . در حقیقت این Spacer نشان دهنده نقاط و نواحی هستند که هنگام تغییر اندازه باید تغییر کنند . هنگام اجرای برنامه طرز کار آنها مشخص تر می گردد .
بااستفاده از Property Editor می توانید نام یا سایر مشخصات هر عنصر را تغییر دهید . برای مثال برای راست به چپ شدن عناصر و حتی منوی های برنامه می توانید از گزینه LayoutDirection موجود در پنجره Property Editor به Qt::RightToLeft تغییر دهید .
در Qt اندازه و موقعیت هر شی توسط لایه (Layout) کنترل می شود . قبل از اینکه یک فرم آماده استفاده باشد باید تمامی عناصر آنرا داخل لایه های مختلف قرار داد . ۳ نوع مختلف لایه عبارتند از افقی ، عمودی و جدول (grid) . در حالتهای عمودی و افقی اشیا و عناصر درون لایه بصورت اتوماتیک بصورت روی هم یا کنار هم قرار می گیرند و در حالت جدول یا Grid اشیاه بصورت خانه های جدول و یا ترکیبی از دو حالت عمودی و افقی قرار می گیرند . با استفاده از این ابزار دیگر نیاز نیست که خود برنامه نویس محل و اندازه هر شی را تعیین و از پیش مشخص کند . فقط کافیس محل تقریبی آنرا مشخص کنید . پس از تمام شدن لایه بندی فرم را انخاب و از جعبه ابزار Lay out in a Grid را انتخاب می کنیم یا CTRL + 5 را می زنیم . اکنون می توانید با کلید های CTRL + R فرم را ببینید .
اکنون قصد داریم تا حدودی کار بخش های مختلف را مشخص کنیم . همانطور که قبلا هم اشاره شد طریق کار و پاسخ دهی نرم افزار های نوشته شده در کیوتی به اتفاقات (event) های اتفاق افتاده از طریق روشی بنام Signal و Slot می باشد . بنابراین Qt Designer یک روش بسیار راحت و عالی برای ایجاد این روابط و نیز مدیریت آنها فراهم ساخته است . بسیار از عناصر دارای سیگنال و اسلاتهای از پیش تعریف شده می باشد که باعث سهولت بسیار برنامه نویسی می شود و نیازی به نوشتن مجدد آنها نیست .
برای مدیریت و ویرایش سیگنالها و اسلات ها ابتدا از طریق جعبه ابزار یا منوی Edit و یا کلید F4 به حالت Edit Signals/Slots می رویم . اکنون موس را روی کلید ابطال گرفته و بر روی فرم می کشیم . پنجره ای باز می شود که سیگنالها و اسلات های مربوط به هر دو عنصر در آن لیست شده است . می خواهیم بازدن کلید ابطال فرم بسته شود . پس سیگنال clicked و اسلات close را انتخاب می کنیم . اکنون دوباره فرم را تست کنید . با تغییر اندازه فرم اندازه و موقعیت هر عنصر برای حفظ تناسب و انطباق با فرم و نیز سایر اعضا تغییر می کند . و نیز با زدن کلید ابطال برنامه خاتمه می یابد .




