مجتمع لينوكس المصري
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

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

موش هتقدر تطفي الكمبيوتر
 
الرئيسيةالبوابةأحدث الصورالتسجيلدخول

 

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

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




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

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



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

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


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

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

[شرح] تصميم حاسبة بسيطة مع Qt 01_Calculator_Qt
والان نبدأ التعديل على الفورم وذلك بالضغط على dialog.ui
حيث يبدا Qt Desginer بالعمل

[شرح] تصميم حاسبة بسيطة مع Qt 02_Calculator_Qt
نقوم بحذف جميع الـWidgets الموجودة في الفورم ثم نضيف
الاتي
TextLabel عدد ٥
spinBox عدد ٢
lcdNumber عدد ١

حتى يصبح الفورم بهذا الشكل
[شرح] تصميم حاسبة بسيطة مع Qt 03_Calculator_Qt

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

والان نعدل خصائص 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 07_Calculator_Qt
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
[شرح] تصميم حاسبة بسيطة مع Qt
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» مين يصدق ان جوجل يكون آلة حاسبة متطورة

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