About Qt/fa

From Qt Wiki
Jump to navigation Jump to search

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

Qt چیست؟

Qt یک چارچوب (freamwork) توسعهٔ نرم‌افزار برای دسکتاپ، امبدد و موبایل است. بسترهای پشتیبانی شده شامل لینوکس، OS X، ویندوز، VxWorks، QNX، آندروید، IOS، BlackVerry،‌ SeilFish OS و دیگر موارد هستند.

Qt خودش یک زبان برنامه‌نویسی نیست. بلکه یک چارچوب نوشته شده توسط C++ است. پیش‌پردازندهٔ MOC (Meta-Object Compiler)، برای تعمیم و گسترش زبان C++ با ویژگی‌هایی مانند signals and slots استفاده شده. که قبل از مرحلهٔ کامپایل، MOC فایل‌های سورس C++ تعمیم یافته توسط Qt را تفسیر کرده و از آن‌ها سورس سازگار با C++ استاندارد را تولید می‌کند. بنابراین، خود چارچوب و برنامه‌ها/کتابخانه‌هایی که از آن استفاده می‌کنند، می‌توانند توسط هر کامپایلر استاندارد C++، مانند Clang، GCC، ICC، MinGW و MSVC کامپایل شوند.

شرکت Qt و پروژه Qt

توسعه Qt در سال 1990 توسط برنامه‌نویسان نروژی Eirik Chambe-Eng و Haavard Nord آغاز شد. شرکت آن‌ها، Trolltech (ترول تک)، که مجوزهای Qt را می‌فروخت و پشتیبانی ارائه می‌کرد، در طول سال‌ها چندین خرید را انجام داد. امروزه Trolltech سابق شرکت Qt نام گذاری شده و یک شرکت تابعه کاملاً متعلق به Digia Plc، فنلاند است. اگرچه شرکت Qt محرک اصلی Qt است، Qt اکنون توسط یک اتحاد بزرگتر توسعه یافته است: پروژهٔ Qt. این سازمان متشکل از شرکت‌ها و افراد زیادی در سراسر جهان است و از یک مدل حکمرانی شایسته پیروی می‌کند.

همه کسانی که می‌خواهند، افراد و شرکت‌ها، می‌توانند به این تلاش بپیوندند. راه‌های زیادی وجود دارد که می‌توان به پروژه Qt کمک کرد، برای مثال: با نوشتن کد یا مستندات برای چارچوب، گزارش اشکالات، کمک به سایر کاربران در انجمن یا حفظ صفحات در این ویکی (همچنین به http://qt.io/contribute/ مراجعه کنید).

مجوز

Qt تحت مجوز‌های متنوعی قابل دسترسی است: شرکت Qt مجوزهای تجاری می‌فروشد، اما همچنین Qt به عنوان یک نرم‌افزار آزاد نیز تحت مجوز‌های LGPL و GPL (پرسش‌های پرتکرار صدور مجوز‌) در دسترس است.

سیستم ساخت (Build System)

اگرچه هر سیستم ساختی را می‌توان با Qt استفاده کرد، Qt هم qmake خودش را دارد. که یک frontend چند سکویی برای build systemهای بومی پلتفرم (platform-native)، مثل GNU Make، Visual Studio و Xcode است.

همچنین یک جایگزین محبوب برای ساخت پروژه‌های Qt است، که پشتیبانی Qt نسخهٔ ۴ چندین سال پیش یکپارچه شده است و Qt نسخهٔ ۵ پشتیبانی اولیهٔ CMake را فراهم آورده.

یک بازیکن جدید به تازگی وارد بازی شده‌‌است: The Qt Build Suite که با نام Qbs هم شناخته می‌شود. Qbs یک سیستم ساخت برپایهٔ QML است که همچنین پشتیبانی از JavaScript را هم فراهم می‌کند. که این سیستم‌ساخت نه فقط قابلیت ساخت را فراهم می‌کند بلکه امکان بسته بندی مانند CMake را هم فراهم می‌آورد.

IDE

Qt سیستم یکپارچه توسعه (IDE) خود را همراه دارد،‌ به اسم Qt Creator. این برنامه بر روی لینوکس، OS X و ویندوز اجرا می‌شود و تکمیل کد هوشمند، برجسته سازی نحو (syntax highlighting)، یک سیستم کمکی یکپارچه، یکپارچه سازی debugger و profiler و همچنین یکپارچه سازی برای تمام سیستم‌های کنترل نسخه اصلی را ارائه می‌دهد (مانند Git، Bazaar). علاوه بر Qt Creator، توسعه دهندگان در ویندوز می‌توانند از افزونه Visual Studio Qt نیز استفاده کنند. سایر IDEها (مانند KDevelop در KDE) نیز می‌توانند استفاده شوند. اما البته استفاده از IDE به هیچ وجه اجباری نیست.

بین المللی سازی و بومی سازی

Qt دارای پشتیبانی عالی برای بین المللی سازی (i18n) و محلی سازی (l10n) است. ابزار Qt Linguist و همراهان آن lupdate، lrelease و lconvert ترجمه برنامه‌های کاربردی به زبان‌های محلی را آسان می‌کند. Qt از اکثر زبان‌ها و سیستم‌های نوشتاری که امروزه استفاده می‌شوند پشتیبانی می‌کند. برای فهرست کامل به صفحات کتابچه راهنمای مربوطه مراجعه کنید.

ویجت‌ها (Widgets)

با Qt، رابط‌های کاربری گرافیکی را می‌توان مستقیماً در C++ با استفاده از ماژول های Widgets آن نوشت. Qt همچنین دارای یک ابزار گرافیکی تعاملی به نام Qt Designer است که به عنوان یک تولید کننده کد برای رابط‌های گرافیکی مبتنی بر ویجت‌ها عمل می‌کند. Qt Designer می‌تواند به صورت مستقل نیز استفاده شود اما همچنین در Qt Creator نیز یکپارچه شده است.

QtQuick

راه دیگر برای نوشتن رابط کاربری گرافیکی با Qt استفاده از ماژول QtQuick است. رابط کاربری گرافیکی با استفاده از QtQuick در QML نوشته شده است. QML یک زبان توصیفی اعلانی است که Javascript را برای برنامه‌نویسی رویه‌ای یکپارچه می‌کند. QtQuick ماژول های لازم را برای توسعه رابط کاربری گرافیکی با QML فراهم می کند. نوشتن کل برنامه‌ها فقط در QML امکان‌پذیر است، اما معمولاً فقط رابط کاربری گرافیکی در QML نوشته می‌شود و باطن برنامه در C++ پیاده‌سازی می‌شود (Integrating QML به ادغام QML و C++ مراجعه کنید). همچنین Qt Creator دارای یک طراح و نمایه کننده رابط کاربری گرافیکی QtQuick یکپارچه است.

ماژول‌های بیشتر

Qt بسیار بیشتر از یک جعبه ابزار رابط کاربری گرافیکی است. ماژول‌هایی را برای توسعه بین پلتفرمی در زمینه‌های شبکه، پایگاه‌های داده، OpenGL، فناوری‌های وب، حسگرها، پروتکل‌های ارتباطی (بلوتوث، پورت‌های سریال، NFC)، پردازش XML و JSON، چاپ، تولید PDF و موارد دیگر ارائه می دهد.

برای فهرست کامل ماژول‌های رسمی Qt، به صفحهٔ همه ماژول‌ها در مستندات Qt مراجعه کنید.

همچنین برای مشاهده لیستی از ماژول های شخص ثالث مبتنی بر Qt، برای استفاده در پروژه های Qt، به Inqlude.org مراجعه کنید.

پیوند‌های زبان (language bindings)

اگرچه برنامه‌هایی که از Qt استفاده می‌کنند معمولاً در C++ و QML با اتصال به زبان‌های دیگر موجود نوشته می‌شوند. این‌ها بخشی از Qt نیستند اما توسط اشخاص ثالث مختلف ارائه می‌شوند. برای مثال Riverbank Computing نرم‌افزار تجاری و رایگان پیوندهای پایتون (PyQt) را فراهم می‌کند. برای پیوند‌های زبان بیشتر به Category:LanguageBindings مراجعه کنید.

آمار و ارقام

یک میلیون دانلود Qt 5.3 در یک ماه پس از راه اندازی Qt 5.3 اندازه گیری شد. [1] 250+ کامیت توسط بیش از 60 مشارکت کننده در هر هفته. [2] شرکت‌ها و سازمان‌های پیشرو در بیش از 70 صنعت از Qt برای راه‌اندازی میلیون‌ها دستگاه و برنامه استفاده می‌کنند. [3] شامل اما محدود نشده به:

  • مشارکت‌کننده‌های عمومی[19]:
    • FRUCT (همکاری دانشگاه فنلاند و روسیه در ارتباطات)
    • KDE e.V. (سازمان غیر انتفاعی از KDE اعضای عمومی)

تاریخچه

منابع

  1. http://www.digia.com/en/Company/News/Digia-Announces-The-Qt-Company-Launches-a-Unified-Website-and-Unleashes-a-20-Indie-Mobile-Monthly-Subscription-Plan/
  2. 2.0 2.1 Thiago Macieira's blog
  3. http://www.qt.io/qt-in-use/
  4. http://arstechnica.com/gaming/2015/11/amd-radeon-software-crimson-a-new-name-and-a-new-look-for-catalyst
  5. http://web.archive.org/web/20110723145813/qt.nokia.com/qt-in-use/story/customer/esa-european-space-agency
  6. http://web.archive.org/web/20110723145736/qt.nokia.com/qt-in-use/autodesk/
  7. http://web.archive.org/web/20110723145736/qt.nokia.com/qt-in-use/autodesk/
  8. http://www.3ds.com/products-services/draftsight-cad-software/
  9. http://www.businesswire.com/news/home/20071015006427/en/Lucasfilm-Ltd.-Trolltechs-Qt-Create-User-Interface#.VXCnRq3tmko
  10. http://web.archive.org/web/20110714191507/qt.nokia.com/qt-in-use/story/customer/walt-disney-feature-animation
  11. http://web.archive.org/web/20110714191457/qt.nokia.com/qt-in-use/story/customer/volvo-mobility-systems
  12. http://web.archive.org/web/20110714191438/qt.nokia.com/qt-in-use/story/customer/siemens
  13. http://web.archive.org/web/20110723145947/qt.nokia.com/about/news/panasonic-selects-qt-for-hd-video-system
  14. https://developer.valvesoftware.com/wiki/Qt
  15. http://www.cadsoft.de/eagle-pcb-design-software/software-versionen/software-versionen-news-in-v7/
  16. https://www.csc.fi/web/elmer/links
  17. 17.0 17.1 17.2 17.3 17.4 http://www.paraview.org/overview/
  18. 18.0 18.1 18.2 18.3 18.4 http://www.paraview.org/participants/
  19. 19.0 19.1 19.2 https://www.qt.io/partners/

لینک‌های خارجی