تلعب المخططات Layouts دورا كبيرا في تطبيقات Qt ، حيث توفر العديد من المميزات ، منها :
المخطط العمودي Vertical Layout : المخطط QVBoxLayout يستخدم لكي تكون ال widgets مرتبة عموديا من الاعلى الى الاسفل. ويمكن تغيير الاتجاه ليكون من الاسفل الى الاعلى باستخدام الدالة setDirection. والدوال الاكثر استخداما هي نفسها المستخدمة في الفئة QHBoxLayout. مثال:
المخطط الشبكي QGridLayout : يستخدم هذا المخطط لترتيب الـ widgets على صفوف واعمدة . واكثر الدوال استخداما هي : حيث تأخذ هذه الدالة الكائن المراد ادخاله الى المخطط ، وكذلك رقم الصف والعمود 'الترقيم يبدأ من صفر' ، وعدد الصفوف والاعمدة التي يأخذها الكائن وهي واحد كقيمة افتراضية . الدالة addLayout تستخدم لاضافة مخطط . الدالتان :
تستخدمان لتحديد حجم العمود او الصف. حيث ان الوسيط الاول يمثل رقم العمود او الصف ، اما الوسيط الاخر فهو لتحديد معامل التكبير . مثال :
++++++++++++++++++++++++++++++ حجم الـ widgets داخل الـ Layouts : ربما قد تسائلت عن كيفية تغيير حجم ال widgets داخل الـ Layouts !! ارجع الى المثال في نهاية الجزء الاول، وقم بتنفيذ البرنامج . قم بتكبير النافذة ، ماذا تلاحظ ؟ لماذا كائن الفئة QLCDNumber قد اخذ مساحة كبيرة من ناحية العرض والارتفاع ؟ ولماذا كائنات الفئات QSpinBox,QLineEdit,QProgressBar قد زاد حجم العرض فقط وليس الارتفاع ! هل يمكن تغيير هذه الحجوم ! طبعا يمكن ، من خلال الفئة QSizePolicy !! اي widget لديه كائن افتراضي من الفئة QSizePolicy ، بحيث هذا الكائن يحمل القوانين الخاصة بحجم الـ widget داخل الـ Layout. اي اذا لم تستخدم المخططات ، فلا تاثير لهذا ال size policy . الان لتغيير الجحم المفترض لاي widget داخل مخطط ، يجب علينا ان نحدد القوانين التي يجب ان يأخذها الـ widget داخل المخطط ، بالنسبة للارتفاع'Vertical policy” والعرض'Horizontal policy“ الدالة المستخدمة هي او كذلك اي widget لديه حجم مثالي ، مثلا بالنسبة للزر QPushButton فان العرض هو 75 بكسل والارتفاع هو 25 بسكل ، هذا الحجم المثالي 'تستطيع معرفته من الدالة Qwidget::sizeHint()” له علاقة مع ال size policy. فمثلا لو استخدمنا القانون fixed مع العرض والارتفاع ، فان هذا يعني ان حجم الكائن سيكون هو الحجم المثالي ، وغير قابل للزيادة في حالة تم تكبير النافذة ولا للنقصان في حالة التصغير. القوانين : الفئات مثل QSpinBox,QLineEdit,QProgressBar تستخدم القانون QSizePolicy::Expanding لل horizontal increment ، و القانون QsizePolicy::Fixed مع vertical increment . الان ارجع الى المثال السابق ، وقم باضافة هذا السطر مع الاسطر التي تحوي الخصائص : لاحظ اننا اعطينا الكائن dial القدرة على التوسعة في حالة ما تم تكبير البرنامج. ولا تنسى اضافة ملف ملاحظة اخيرة على هذا الموضوع : لا تقلق نفسك بتجربة كل size policy ، فعندما نتحدث لاحقا عن برنامج المصمم Designer سنستخدم طريقة سريعة جدا بحيث نستطيع ان نرى المخرجات بسرعة ايضا . ++++++++++++++++++++++++++++ معامل التكبير Stretch Factor : عند وضع الـ widgets داخل المخطط Layout فان المخطط سيكون مسؤول عن تنففيذ ال size policy لكل widgets فيه ،وذلك في حالة ما اذا تم تغيير حجم البرنامج سواءا بالتكبير او التصغير . ولكن لنفرض ان لدينا 3 ازرار موجودة في مخطط افقي كالاتي : واردنا تكبير الزر الاول بحيث يكون اكبر من الزرين الاخرين ! ال size policy لا يعطينا مثل هذه الامكانيات ، لذلك سنستخدم الدالة : حيث تاخذ وسيطين ، الاول هو مؤشر للكائن المراد تكبيره ، والثاني هو معامل التكبير . مثال :
لاحظ ان المعامل الذي وضعناه هو 1 ، وفي هذا المثال لو وضعنا 1 او 14 او حتى 1000 فلا يوجد فرق! هذا الرقم سيكون له تأثير في حالة قمنا ياستخدامه على عدة كائنات ، اثنين او اكثر . لاحظ في هذا المثال:
حيث الزيادة في حجم الزر الاول هي ثلاث اضعاف مقارنة مع البقية .وهكذا. الى هنا نصل الى ختام الموضوع . وللاستزادة عليك بالرجوع الى ال Assistant ، لكن يكفي هذا الموضوع كبداية . دمتم بخير . |