مجتمع لينوكس المصري

موش هتقدر تطفي الكمبيوتر
 
الرئيسيةالبوابةاليوميةس .و .جبحـثالأعضاءالمجموعاتالتسجيلدخول

شاطر | 
 

 [شرح] تصميم حاسبة بسيطة مع Qt

اذهب الى الأسفل 
كاتب الموضوعرسالة
taaz30



المساهمات : 114
تاريخ التسجيل : 28/11/2008

مُساهمةموضوع: [شرح] تصميم حاسبة بسيطة مع Qt   الأحد ديسمبر 28, 2008 11:57 am



افتراضي تصميم حاسبة بسيطة مع Qt
بسم الله الرحمن الرحيم

في هذا الدرس سوف نصمم حاسبة بسيطة والكود تبعها موجود
مع الامثلة التي تاتي مع QT
لكن سوف نصممها تحت بيئة التطوير QDevelop من البداية
دون الرجوع للكود وسوف احاول اضافة بعض التعديلات عليها


نبدأ العمل بتشغيل QDevelop

وانشاء مشروع جديد وتعديل الخيارات مثل الموجود في الصورة
التالية


والان نبدأ التعديل على الفورم وذلك بالضغط على dialog.ui
حيث يبدا Qt Desginer بالعمل


نقوم بحذف جميع الـWidgets الموجودة في الفورم ثم نضيف
الاتي
TextLabel عدد ٥
spinBox عدد ٢
lcdNumber عدد ١

حتى يصبح الفورم بهذا الشكل


الان نعدل خصائص الـWidgets كالاتي
نبدأ مع TextLabel
نعدل خاصية alignment الى center لكل من الـHorzintal
والـVertical
نعدل نعدل الخاصية Text لكل الـTextLabel حتى يصبح الفورم
بهذا الشكل


والان نعدل خصائص spinBox
نعدل الـobjectName كالاتي
الاول sBox1
الثاني sBox2
ونعدل خاصية maximum لكل منهما الى ٩٩٩
ونعدل خاصية minimum لكل منهما الى -٩٩٩

الان نضيف بعض التعديلات على الفورم حتى يظهر بشكل جيد
نضيف Vertical spacer عدد ٤ فوق كل من + و = و lcdBox و Output

الان حدد كل من input 1 و sBox1 ثم اضغط على
Lay Out Vertically

وافعل ذلك مع كل Widgets فوق بعض

حتى يصبح الفورم بهذا الشكل



ثم ازل التحديد عن جميع الـWidgets واضغط على Lay Out in a Grid

وغير حجم الفورم ليصبح بهذا الشكل



الان احفظ العمل واغلق Qt Desginer

نرجع الان لـQDevelop

نبدأ الان بكتابة الكود

نبدأ اولا بالتصريحdeclare عن بعض الدوال
لفعل ذلك افتح الملف dialogimpl.h
وقم باضافة الاسطر الاتية له

اقتباس :
void on_sBox1_valueChanged(int value);
void on_sBox2_valueChanged(int value);

فيصبح الملف بهذا الشكل

اقتباس :
#ifndef DIALOGIMPL_H
#define DIALOGIMPL_H
//
#include "ui_dialog.h"
//
class DialogImpl : public QDialog, public Ui::Dialog
{
Q_OBJECT
public:
DialogImpl( QWidget * parent = 0, Qt::WFlags f = 0 );
private slots:
void on_sBox1_valueChanged(int value);
void on_sBox2_valueChanged(int value);
};
#endif

الان ناتي للملف dialogimpl.cpp

ونضيف الاسطر الاتية
اقتباس :
connect( sBox1, SIGNAL( valueChanged() ), this, SLOT( on_sBox1_valueChanged() ) );
connect( sBox2, SIGNAL( valueChanged() ), this, SLOT( on_sBox2_valueChanged() ) );

وهي لربط تغير قيمة الـspinBox بالدالة التي تقوم بحساب ناتج الجمع

الان نقوم بكتابة الدالتين
اقتباس :
void DialogImpl::on_sBox1_valueChanged(int value)
{
lcdNumber->display(QString::number(value + sBox2->value()));
}

void DialogImpl::on_sBox2_valueChanged(int value)
{
lcdNumber->display(QString::number(value + sBox1->value()));
}

عمل الدالتين متشابة
فهي تقوم بجمع قيمة spinBox الاول والثاني معا ثم تعرض
الناتج في lcdBox

وهذا هو ملف dialogimpl.cpp بعد اجراء التعديلات السابقة عليه
اقتباس :
#include "dialogimpl.h"
//
DialogImpl::DialogImpl( QWidget * parent, Qt::WFlags f)
: QDialog(parent, f)
{
setupUi(this);

connect( sBox1, SIGNAL( valueChanged() ), this, SLOT( on_sBox1_valueChanged() ) );
connect( sBox2, SIGNAL( valueChanged() ), this, SLOT( on_sBox2_valueChanged() ) );
}
//
void DialogImpl::on_sBox1_valueChanged(int value)
{
lcdNumber->display(QString::number(value + sBox2->value()));
}

void DialogImpl::on_sBox2_valueChanged(int value)
{
lcdNumber->display(QString::number(value + sBox1->value()));
}
//

الان قم بعمل Build و Debug

وهذه هي الصورة النهائية للبرنامج


الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو
 
[شرح] تصميم حاسبة بسيطة مع Qt
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
مجتمع لينوكس المصري :: الأقسام التطويرية (البرمجية) في بيئة GNU/Linux :: .: المقالات والدورات البرمجية :.-
انتقل الى: