السلام عليكــم ورحمـة الله وبركاتــة
على بركة الله ابدء معكم دروس بسيطة لتعلم ال Qt .
طبعا المستوى مبتدئ ,, لأني انا مبتدئ.
اتمنى من الاعضاء الخبراء ان يتواجدوا هنا و ان يصححوا لي فأحتمال الخطأ وارد جدا.
الهدف من الموضوع ان نتعلم معا ..
وكل من لديه معلومة يضيفها.
بسم الله نبدأ.
يفترض انك منصب متطلبات العمل.
راجع الشرح هنا
http://qt-ar.org/lessons/show3.html
هذه هي واجهة ال QDevelop و التي سنعمل عليها
لتكوين مشروع جديد ، من قائمة Project اختر New Project ،
ثم أعطي المعلومات المطلوبة كما تشاء.
كالعادة ، البرنامج الاول سيكون Hello Qt
بعد تكوين المشروع لاحظ نافذت ال project explorer في يسار النافذة ،،
كما في الصورة
هذه هي الملفات الاساسية للمشروع.
الان اضغط دبل كلك على الملف hello.ui .
سفتح لك ال Qt Designer
كما في الصورة.
اضغط على زر close .
سيظهر لك dialog يحوي على زر Ok , Cancel ،، قم بحذف هذه الازرار بواسطة مفتاح Del .
الان سيكون ال dialog فارغ،،
في الجهة اليسرى من الشاشة سيكون هناك ال Widget Box (يعني ال controls) التي ممكن ان تضيفها الى ال dialog .
سنضيف زر ، من القائمة اختر Push Button و قم بسحبة الى ال dialog
غير حجم الزر كما تشاء ،
انا لدي كما في الصورة
الان اضغط بالزر الايمن للماوس على الزر و اختار Change text
واكتب Hello Qt
ثم مرة اخرى من القائمة اختر Change objectName وسمه HelloBtn ثم اضغط OK .
الان اغلق ال Qt Designer ، سيطالبك بالخزن فأضغط نعم.
ستعود الى ال QDevelop .
الان افتح ملف الهيدر (لدي اسمه HelloDlg) واضف اليه الاسطر كما في الصورة
السطر المضاف الاول واضح هو الهيدر فايل الخاص ب MessageBox و ذلك لأننا سنستعملها في برنامجنا لاحقا.
السطر المضاف الثاني هو الدالة التي ستتنفذ عن الضغط على الزر.
الان انتقل الى ملف السورس (بواسطة ال Project Explorer)
واضف الاسطر كما في الصورة
السطر الاول المضاف ،
هي الدالة المسؤولة عن ربط ال Widget (control) مع العمل الذي تريد ان تقوم به.
للتوضيح اكثر (هذا من الكتب )
** Cplusplus GUI Programming with Qt4 (2nd Edition).chm The connect() statement looks like this: connect(sender, SIGNAL(signal), receiver, SLOT(slot)); where sender and receiver are pointers to QObjects and where signal and slot are function signatures without parameter names. The SIGNAL() and SLOT() macros essentially convert their argument to a string. ** No.Starch.Press.The.Book.of.Qt.4.The.Art.of.Building.Qt.Applications.Jul.2007 The first two arguments specify the object sending the signal and the signal that we want to bind to the receiving slot. The last two arguments specify the object that is the recipient of the signal, and the receiving slot.
الاسطر المضافة الثانية هي الوظيفة التي ستنفذ عند الضغط على الزر.
الان من قائمة Build اختر Build
ثم من قائمة Debug اختر Start Program
والنتيجة .. كما في الصورة
طيب .. الان سنضيف زر خروج للبرنامج ..
افتح مرة اخرى ال Qt Designer واضف زر جديد ليصبح البرنامج كما في الصورة
اضغط بالزر الايمن للماوس على الزر الجديد و اختر Change objectName غيره الى exitButton ،،
الان سنتعلم طريقة ثانية للربط بواسطة ال Qt Designer بدل استخدام الكود (أي دالة connect)
من قائمة Edit اختر Edit Signals/Slots
الان اضغط على زر Exit لاحظ ظهور سهم ، هذا معناه ان زر Exit سيمثل ال sender و حيث ما ستفلت الماوس سيمثل ال receiver ،،
افلت الماوس على أي جزء من ال Dialog
لاحظ اول ما تفلت الماوس سيظهر لك dialog ، في الجهة اليسرى يظهر لك ال signals المتوفرة مع هذا ال widget و على الجهة اليمنى تظهر الوظائف المتوفرة (التي كنا نكتبها في ال slot)
كما في الصورة ،
اولا اشر على ال check box الموجود في الاسفل ، من الجهة اليسرى اختر clicked و من الجهة اليمنى اختر close .
ثم اضغط ok .
الان اضغط على F3 للعودة للوضع الطبيعي ،،
طبعا لاحظ في الجهة اليمنى يوجد Signal/Slot Editor

