کیو تی

آنچه در این صفحه می خوانید:

معرفی Qt

Qt یک فریمورک نرم افزاری کاربردی cross-platform، رابط کاربر گرافیکی GUI و یک toolkit است که برای توسعه نرم افزارها استفاده می شود. Qt یک ابزار ویجت رایگان و اوپن سورس برای ایجاد رابط های کاربر گرافیکی و همچنین برنامه های cross-platform است که بر روی سیستم عامل های مختلف نرم افزاری و سخت افزاری مانند لینوکس، ویندوز، macOS، اندروید یا سیستم های جاسازی شده اجرا می شوند که با تغییر کمی یا بدون تغییر در زمینه های اساسی دارند. کد پایه در حالی که هنوز یک برنامه نیتیو با قابلیت ها و سرعت نیتیو است. Qt در حال حاضر توسط شرکت Qt، یک شرکت با فهرست عمومی و پروژه Qt تحت مدیریت اوپن سورس توسعه داده شده است، که شامل توسعه دهندگان و سازمان های فردی است که برای پیشرفت Qt فعالیت می کنند.

کیو تی دیزاینر

Qt معمولاً به عنوان یک ابزار گرافیکی مورد استفاده قرار می گیرد، اگرچه در ایجاد برنامه های CLI نیز بسیار مفید است. این سیستم عامل بر روی سه سیستم عامل اصلی دسکتاپ و همچنین در سیستم عامل های موبایل مانند Symbian ،Nokia Belle ،Meego Harmattan ،MeeGo یا BB10 و دستگاه های تعبیه شده اجرا می شود. پورت های Android و iOS نیز در حال توسعه هستند.

Qt مجموعه ای چشمگیر از ماژول ها را ارائه می دهد، از جمله:

  • QtCore، یک کتابخانه پایه است که کانتینر، مدیریت موضوعات، مدیریت رویدادها و موارد دیگر را در اختیار شما قرار می دهد.
  • QtGui و QtWidgets، یک ابزار GUI برای دسکتاپ، که بسیاری از مؤلفه های گرافیکی را برای طراحی برنامه های کاربردی فراهم می کند.
  • QtNetwork، مجموعه ای از کلاس های مفید را برای مقابله با ارتباطات شبکه فراهم می کند.
  • QtWebkit، موتور WebKit، استفاده از صفحات وب و برنامه های وب را در یک برنامه Qt امکان پذیر می کند.
  • QtSQL، یک لایه انتزاعی کاملاً برجسته SQL RDBM با درایورهای شخصی قابل پشتیبانی از ODBC ،MySQL و PostgreSQL در خارج از جعبه موجود است.
  • QtXML، پشتیبانی از تجزیه ساده XML و DOM
  • QtXmlPatterns، پشتیبانی از اعتبار سنجی XSLT ،XPath ،XQuery و Schema

کاربرد Qt

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

Qt از کامپایلرهای مختلفی از جمله کامپایلر++GCC C و مجموعه ویژوال استودیو پشتیبانی می کند و از پشتیبانی بین المللی گسترده ای برخوردار است. Qt همچنین Qt Quick را ارائه می دهد، که شامل یک زبان برنامه نویسی اعلانی به نام QML است که با استفاده از جاوااسکریپت امکان ارائه منطق را فراهم می کند. با استفاده از Qt Quick، توسعه سریع برنامه برای دستگاه های تلفن همراه امکان پذیر شد، در حالی که منطق را می توان برای دستیابی به بهترین عملکرد ممکن، با کد نیتیو نیز نوشت. سایر ویژگی ها شامل دسترسی به پایگاه داده SQL، تجزیه و تحلیل XML، تجزیه JSON، مدیریت موضوعات و پشتیبانی شبکه است.

امکانات Qt

همکاری بین طراحان و توسعه دهندگان

Qt Design Studio فاصله بین طراحان و توسعه دهندگان را می بندد. اکنون آنها می توانند همزمان با یک فریمورک متحد، یک زبان مشترک، حلقه بازخورد کمتر و تکرار سریعتر کار کنند. دارایی UI خود را در ابزار طراحی گرافیکی مورد علاقه خود طراحی کنید و آنها را به Qt وارد کنید. کد دارایی ها بطور خودکار تولید می شود و آماده استفاده توسط توسعه دهندگان است. طرح های خود را با انیمیشن های ساخته شده با ابزار نمونه سازی آسان Qt Design Studio به صورت زنده بکشید. فوراً پیش نمایش و تنظیم دقیق طرح های خود را برای پیکسل کامل و پیش نمایش آن در دستگاه هدف قرار دهید.

ابزار طراحی و توسعه UI 3D کراس پلتفرم

Qt 3D Studio ابزاری است که در آن شما می توانید مدل ها، تصاویر و سایر دارایی های سه بعدی را برای ایجاد ارائه های تعاملی، UI ها و برنامه های کاربردی وارد کنید. این ویرایشگر WYSIWYG در ویندوز، مک و لینوکس اجرا می شود. شما می توانید دارایی های طراحی را از ابزارهای نویسندگی محبوب مانند فتوشاپ، مایا و The Foundry MODO وارد کنید. Qt 3D Studio Viewer به شما امکان می دهد تا طراحی خود را در عمل آزمایش کنید. همچنین می توانید از ویژگی اتصال از راه دور برای اتصال به یک دستگاه استفاده کنید و بلافاصله تغییرات طراحی را در real-time مشاهده کنید. معماری Qt 3D Studio را با افزونه ها متناسب با نیاز خود گسترش دهید.

Qt برای MCU

با استفاده از Qt برای MCU، می توانید با استفاده از زبان UI اعلامی قدرتمند، QML و مجموعه ای غنی از کنترل های Qt Quick Controls، تجربیات جذاب کاربر ایجاد کنید. همچنین شامل یک موتور رندر گرافیکی جدید با ردپای کم حافظه است که برای میکروکنترلرها و سایر دستگاه های دارای منبع محدود بهینه شده است. مهارت های خود را روی یک فناوری متمرکز کنید و از همان ابزار طراحی و توسعه Qt آشنا استفاده کنید تا برنامه های خود را برای MCU ایجاد کنید.

حمل و نگهداری سیستم عامل های مختلف

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

بار تعمیر و نگهداری را با استفاده از یک پایه کد واحد به حداقل برسانید. وقت خود را بر نوآوری و بهبود UX محصول خود متمرکز کنید. از تغییرات در سیستم عامل های مختلف، رفع اشکالات و ساختن ویژگی های جدیدی که برای پیشبرد شما در مقابل تقاضای بازار استفاده می شود، نگران نباشید. دارایی UI خود را با وارد کردن آنها از ابزار طراحی گرافیک شخص ثالث، استفاده از ویجت ها و کنترل های اولیه Qt یا استفاده از QML طراحی کنید. ساختن یک برنامه کاربردی مبتنی بر کتابخانه ها و ابزارهایی از فریمورک های مختلف می تواند باعث بی ثباتی و عوارض شود. Qt از زبان های مختلف توسعه پشتیبانی می کند. ++C کارآمد، قدرتمند و متنوع است و زبان UI اعلامی Qt ،QML، ایجاد UI ها با سرعت ایجاد کردن را آسان می کند. شما حتی می توانید در پایتون کدگذاری کنید!

رابط های کاربر را با Qt for Python ایجاد کنید

Qt for Python پروژه ای است که مجموعه رسمی اتصالات PySide2 را ارائه می دهد که برنامه های پایتون را بیش از حد شارژ می کند. در حالی که API های Qt شهرت جهانی دارند، دلایل بیشتری وجود دارد که شما باید Qt را برای پایتون در نظر بگیرید. اولین نسخه رسمی ماژول PySide2 هم اکنون در دسترس است! قدرت و سادگی برای توسعه دهندگان پایتون و رفتن به دنیای برنامه های Qt آسان است، خواه تازه کار برنامه نویسی باشید یا یک متخصص درگیر پایتون باشید.

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

ویژگی های فنی Qt Design

  • Photoshop & Sketch: رابط هی کاربری خود را از Photoshop و Sketch به Qt وارد کنید.
  • بازیافت مؤلفه: دارایی های خود را به اجزای QML تبدیل کنید که در پروژه های مختلف قابل استفاده مجدد باشند. هیچ کدی تلف نمی شود!
  • ویرایشگر ویژوال کد: طرح های خود را بصری یا با QML اصلاح کنید، زبان اعلانی آسان با استفاده از Qt.
  • جلوه های دیداری قابل تنظیم: طرح های گرافیکی خود را با جلوه های بصری داخلی و قابل تنظیم بهبود دهید.
  • انیمیشن های مبتنی بر جدول زمانی: رابط Timeline انیمیشن های طراحی پیچیده را ساده می کند.
  • نمونه اولیه با جاوااسکریپت: منطق برنامه را با JavaScript در طول طراحی برنامه شبیه سازی کنید.
  • طرح های پویا را بسازید: تغییرات خودکار در اندازه یا موقعیت عناصر UI شما برای سازگاری با هر صفحه ای.

معماری Qt

معماری کیو تی
Qt بر اساس این مفاهیم کلیدی ساخته شده است:

  • انتزاع کامل رابط کاربری گرافیکی: Qt هنگامی که اولین بار منتشر شد، از موتور رنگ و کنترل های خود استفاده کرد و از سیستم عامل های مختلفی که هنگام ویزارد ویجت های خود استفاده می کرد، تقلید می کند. این امر کار حمل و نقل را آسانتر کرد زیرا کلاس های معدودی در Qt بستگی به سکوی هدف داشتند. با این حال، گاهی اوقات این اختلافات جزئی منجر می شود که در آن نقط نقص ناقص باشد. نسخه های اخیر Qt از API های سبک نیتیو سیستم عامل های مختلف، روی سیستم عامل هایی که دارای یک ابزارک نیتیو هستند، برای پرس و جو از معیارها و ترسیم بیشتر کنترل ها استفاده می کنند و از این قبیل موارد رنج نمی برند. در برخی سیستم عامل ها، مانند MeeGo و KDE ،Qt API نیتیو است. برخی از ابزارهای گرافیکی قابل حمل دیگر، تصمیمات طراحی متفاوتی گرفته اند. به عنوان مثال، wxWidgets برای پیاده سازی های خود از مجموعه ابزارهای برنامه هدف استفاده می کند.
  • سیگنال ها و اسلات ها: ساختارهای زبانی که در Qt برای ارتباط بین اشیاء معرفی شده اند و اجرای این الگوی مشاهده گر را در حالی که از کد boilerplate استفاده می کنید، آسان می کند. مفهوم این است که ابزارکهای GUI می توانند سیگنال هایی را که حاوی اطلاعات رویداد است ارسال کنند که توسط سایر کنترل ها با استفاده از توابع ویژه معروف به اسلاتها قابل دریافت است.
  • کامپایلر Metaobject: کامپایلر meta-object، که به آن moc گفته می شود، ابزاری است که بر روی منابع یک برنامه Qt اجرا می شود. این ماکرو ها را از کد سی پلاس پلاس به عنوان حاشیه نویسی تفسیر می کند و از آنها برای تولید کد افزوده ++C با متا اطلاعات در مورد کلاس های مورد استفاده در برنامه استفاده می کند. این متا اطلاعات توسط Qt برای ارائه ویژگی های برنامه نویسی که بطور نیتیو در ++C وجود ندارد استفاده می شود.
  • اتصالات زبان: Qt را می توان در چندین زبان برنامه نویسی دیگر مانند Python ،Javascript ،C یا Rust از طریق Language bindings استفاده کرد.
  • ماژول های Qt: این فریمورک با شروع Qt 4.0 به ماژول های جداگانه تقسیم می شود. با Qt 5.0 معماری حتی بیشتر مدولار شد. اکنون Qt به ماژول های ضروری و اضافی تقسیم شده است.


مثال های Qt

مثال برنامه (ActiveQt) COM

مثال برنامه (ActiveQt) COM نشان می دهد که چگونه از ActiveQt برای تهیه یک برنامه Qt استفاده کنید که می تواند از طریق COM به صورت خودکار انجام شود. کلاس های مختلف مبتنی بر QObject به عنوان اشیاء COM که با GUI برنامه Qt در حال اجرا ارتباط برقرار می کنند قرار دارند. API های این اشیاء COM برای شبیه سازی API های برنامه های استاندارد COM طراحی شده است.

class Application : public QObject
{
    Q_OBJECT

    Q_CLASSINFO("ClassID", "{b50a71db-c4a7-4551-8d14-49983566afee}")
    Q_CLASSINFO("InterfaceID", "{4a427759-16ef-4ed8-be79-59ffe5789042}")
    Q_CLASSINFO("RegisterObject", "yes")

    Q_PROPERTY(DocumentList* documents READ documents)
    Q_PROPERTY(QString id READ id)
    Q_PROPERTY(bool visible READ isVisible WRITE setVisible)

public:
    explicit Application(QObject *parent = nullptr);
    DocumentList *documents() const;

    QString id() const { return objectName(); }

    void setVisible(bool on);
    bool isVisible() const;

    QTabWidget *window() const { return m_ui.data(); }

public slots:
    void quit();

private:
    QScopedPointer <DocumentList> m_docs;
    QScopedPointer <QTabWidget> m_ui;
};

مثال مرورگر وب

مثال قدرت و سادگی ارائه شده توسط Qt برای پایتون به توسعه دهندگان را نشان می دهد. این نرم افزار از چندین زیرشاخه PySide2 برای ارائه یک رابط کاربر روان و مدرن استفاده می کند که مناسب مرورگر وب است. برنامه ویژگی های زیر را ارائه می دهد:

  • تجربه مرور مبتنی بر برگه با استفاده از QTabWidget.
  • مدیر بارگیری را با استفاده از QProgressBar و QWebEngineDownloadItem بارگیری کنید.
  • مدیر نشانک با استفاده از QTreeView.

کیو تی برای پایتون

مانند هر فریمورک برنامه نویسی دیگر، شما با برنامه سنتی "سلام جهانی" شروع می کنید. در اینجا مثال ساده ای از برنامه Hello World در PySide2 آورده شده است:

import sys
from PySide2.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
label = QLabel("Hello World!")
label.show()
app.exec_()
نظرتون درباره این نوشته چیه؟ عالیه بد نیست خوب نبود