• 0
الاخير زمانه

البداية مع Qt

سؤال

السلام عليكــم ورحمـة الله وبركاتــة

على بركة الله ابدء معكم دروس بسيطة لتعلم ال Qt .

طبعا المستوى مبتدئ ,, لأني انا مبتدئ.

اتمنى من الاعضاء الخبراء ان يتواجدوا هنا و ان يصححوا لي فأحتمال الخطأ وارد جدا.

الهدف من الموضوع ان نتعلم معا ..

وكل من لديه معلومة يضيفها.

بسم الله نبدأ.

يفترض انك منصب متطلبات العمل.

راجع الشرح هنا

http://qt-ar.org/lessons/show3.html

هذه هي واجهة ال QDevelop و التي سنعمل عليها

post-47438-1225732323_thumb.jpg

لتكوين مشروع جديد ، من قائمة Project اختر New Project ،

ثم أعطي المعلومات المطلوبة كما تشاء.

كالعادة ، البرنامج الاول سيكون Hello Qt

بعد تكوين المشروع لاحظ نافذت ال project explorer في يسار النافذة ،،

كما في الصورة

post-47438-1225732369_thumb.jpg

هذه هي الملفات الاساسية للمشروع.

الان اضغط دبل كلك على الملف hello.ui .

سفتح لك ال Qt Designer

كما في الصورة.

post-47438-1225733035_thumb.jpg

اضغط على زر close .

سيظهر لك dialog يحوي على زر Ok , Cancel ،، قم بحذف هذه الازرار بواسطة مفتاح Del .

الان سيكون ال dialog فارغ،،

في الجهة اليسرى من الشاشة سيكون هناك ال Widget Box (يعني ال controls) التي ممكن ان تضيفها الى ال dialog .

سنضيف زر ، من القائمة اختر Push Button و قم بسحبة الى ال dialog

post-47438-1225732481_thumb.jpg

غير حجم الزر كما تشاء ،

انا لدي كما في الصورة

post-47438-1225732528_thumb.jpg

الان اضغط بالزر الايمن للماوس على الزر و اختار Change text

post-47438-1225733091_thumb.jpg

واكتب Hello Qt

ثم مرة اخرى من القائمة اختر Change objectName وسمه HelloBtn ثم اضغط OK .

post-47438-1225733143_thumb.jpg

الان اغلق ال Qt Designer ، سيطالبك بالخزن فأضغط نعم.

ستعود الى ال QDevelop .

الان افتح ملف الهيدر (لدي اسمه HelloDlg) واضف اليه الاسطر كما في الصورة

post-47438-1225733191_thumb.jpg

السطر المضاف الاول واضح هو الهيدر فايل الخاص ب MessageBox و ذلك لأننا سنستعملها في برنامجنا لاحقا.

السطر المضاف الثاني هو الدالة التي ستتنفذ عن الضغط على الزر.

الان انتقل الى ملف السورس (بواسطة ال Project Explorer)

واضف الاسطر كما في الصورة

post-47438-1225733255_thumb.jpg

السطر الاول المضاف ،

هي الدالة المسؤولة عن ربط ال 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

والنتيجة .. كما في الصورة

post-47438-1225733446_thumb.jpg

طيب .. الان سنضيف زر خروج للبرنامج ..

افتح مرة اخرى ال Qt Designer واضف زر جديد ليصبح البرنامج كما في الصورة

post-47438-1225733484_thumb.jpg

اضغط بالزر الايمن للماوس على الزر الجديد و اختر Change objectName غيره الى exitButton ،،

الان سنتعلم طريقة ثانية للربط بواسطة ال Qt Designer بدل استخدام الكود (أي دالة connect)

من قائمة Edit اختر Edit Signals/Slots

post-47438-1225733591_thumb.jpg

الان اضغط على زر Exit لاحظ ظهور سهم ، هذا معناه ان زر Exit سيمثل ال sender و حيث ما ستفلت الماوس سيمثل ال receiver ،،

افلت الماوس على أي جزء من ال Dialog

post-47438-1225733642_thumb.jpg

لاحظ اول ما تفلت الماوس سيظهر لك dialog ، في الجهة اليسرى يظهر لك ال signals المتوفرة مع هذا ال widget و على الجهة اليمنى تظهر الوظائف المتوفرة (التي كنا نكتبها في ال slot)

post-47438-1225733698_thumb.jpg

كما في الصورة ،

اولا اشر على ال check box الموجود في الاسفل ، من الجهة اليسرى اختر clicked و من الجهة اليمنى اختر close .

ثم اضغط ok .

الان اضغط على F3 للعودة للوضع الطبيعي ،،

طبعا لاحظ في الجهة اليمنى يوجد Signal/Slot Editor

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

52 إجابة على هذا السؤال .

  • 0

طبعا لاحظ في الجهة اليمنى يوجد Signal/Slot Editor

post-47438-1225734477_thumb.jpg

***

- من قائمة Form اختر Preview ، اذا اردت ان تشاهد ال Dialog الذي صممته.

- من قائمة Form اختر View Code لرؤية الكود الخاص بتكوين ال Dialog الذي صممته.

post-47438-1225734597_thumb.jpg

لاحظ الدالة setupUi وهي الدالة التي يستدعيها البرنامج داخل ال constructor و الخاصة بتهيئة ال Dialog .

الان اغلق ال Qt Designer ثم قم ببناء البرنامج من جديد و نفذه.

انتهى الدرس.. التطبيق في المرفقات.

طبعا هذا مختصر جدا ولم اتطرق الى كثير من الامور لأني انا لا اعلمها.

لكن يمكن الذهاب الى

post-47438-1225734664_thumb.jpg

لتجد فيه ضالتك.

مثلا انا ذكرت ال QMessageBox بأبسط صورها ، لكن في ال Assistant ستجد التفصيل و الانواع.

يتبع بأذن الله ....

MyP1.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخى الأخير زمانه ,,

اولا : بالطبع مشكووووووووووووووور كثيرا على هذا الشرح و اتمنى ان يوفقك الله لأكماله للوصول لمراحل متقدمة بعون الله

ثانيا : لى تعليق بسيط , انت بدأت اول برنامج Hello World باستخدام الـ Designer + OOP و اعتقد ان هذا كثير جدا على المبتدئين , يكفى المبتدئ ان يكون اول عدة برامج له بشكل Procedural or Functional , البرنامج عبارة عن عدة دوال مقسمة و ليسس عدة اصناف لأن هذا معقد و صعب على المبتدئ , ايضا استخدامك للـ Designer امر صعب على المبتدئ , انا حتى الان لا اعرف كيف استخدمه على الاطلاق فأفضل كتابة الواجهة من الكود فهى اسهل و امتع , على الأفل بالنسبة لى .

اشكرك على مجهودك هذا فى القسم لعله ينشط و لو قليلا ,,

وفقكم الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
و اتمنى ان يوفقك الله لأكماله للوصول لمراحل متقدمة بعون الله

ان شاء الله ،، لكن عليكم ان تساعدوني :lol:

انت بدأت اول برنامج Hello World باستخدام الـ Designer + OOP و اعتقد ان هذا كثير جدا على المبتدئين

انا شرحت هكذا لأنني لم اجد هكذا دروس ،،

يعني معظم الكتب تبدأ كما ذكرت انت ، لكن ال designer لم اجد شرح وافي عنه ،،

هناك شرح لكن ليس خطوة بخطوة ..

ربما انا لم ابحث بصورة جيدة B)

لكن عموما يجب على القارئ ان يكون يجيد مفاهيم ال OOP جيدا و حينها لن يواجه اي صعوبه في فهم الكود و هيكلية البرنامج.

كتابة الواجهة من الكود فهى اسهل و امتع

القادم من ال C# حيث السهولة في اضافة ال controls صعب ان يعود لتكوين الواجهة بأستخدام الكود من البداية.

اشكرك على مجهودك هذا فى القسم لعله ينشط و لو قليلا ,,

وفقكم الله

اتمنى مشاركتي ،، فأنت افضل مني ,,

معلوماتي قليلة وسأضطر للتوقف في وقت قريب :(

بس ان شاء الله مادام لدي معلومة فسأضيفها ..

ايضا الاخ محمد العبدلي مدعو للمشاركة .. في امور متقدمة ..

بس خلي شوي تثقل الدروس الاول .

تحياتي

تم تعديل بواسطه الاخير زمانه
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــة

الحمد لله الذي قدر لنا المتابعة.

الدرس الثاني..

سنعمل التطبيق التالي

post-47438-1225802455_thumb.jpg

- كون مشروع جديد.

- افتح ال Qt Designer وكون التطبيق كما في الشكل ، أي اضف :

3 Buttons
2 Labels
2 Line Edit

- اضغط بالزر الايمن على ال label الاول و اختر Change plain text و غيره الى Name ، ونفس الشيء مع ال label الثاني وغيره الى Password .

- غير اسماء ال buttons كما في الصورة التي في الاعلى ثم غير ال objectName الى showButton و resetButton و exitButton على التوالي.

- غير ال objectName لل Line Edit الى txtName للأول و txtPass للثاني.

- الان اختر ال line edit الثاني (الخاص بكلمة المرور) و غير خاصية ال echoMode الى password (غير الخاصية من نافذت ال Property Editor ) .

post-47438-1225802522_thumb.jpg

- اضغط على F4 للأنتقال الى Edit Signals/Slots

- اضف دالة الخروج الى زر Exit كما فعلنا في الدرس الاول

post-47438-1225802559_thumb.jpg

الان سنضيف وظيفة زر Reset ،

اضغط على زر Reset واسحب الماوس و أفلته داخل ال Line Edit الاول

post-47438-1225802587_thumb.jpg

من النافذة التي ستظهر اختر كما في الصورة

post-47438-1225802618_thumb.jpg

الان مرة اخرى اختر زر Reset و اسحب الماوس لكن هذه المرة افلته داخل ال Line Edit الثاني وايضا اختر كما في الصورة التي في الاعلى.

و الصورة النهائية

post-47438-1225802647_thumb.jpg

الان اغلق ال Qt Designer (و لا تنسى الخزن) للعودة الى ال QDevelop لأضافة الكود اللازم.

اولا ملف الهيدر اضف

post-47438-1225802682_thumb.jpg

ثانيا ملف السورس اضف

post-47438-1225802714_thumb.jpg

بالنسبة للكود المضاف هنا ،،

السطر الاول اضفته فقط لأريك امكانية التعامل مع ال Line Edit بواسطة الكود ،، ممكن عن طريق هذه الدالة setText ان نضع النص الذي نريده داخل ال Line Edit .

لاحظ اننا تعاملنا مع ال Line Edit عن طريق اسم ال objectName الذي أعطيناه اثناء مرحلة التصميم و ايضا استخدمنا ال -> لأن ال Line Edit معرف على انه pointer ،،

لو رأيت الكود الخاص ب Dialog خلال التصميم (كما ذكرت في الدرس الاول) ستلاحظ التعريف

post-47438-1225802747_thumb.jpg

ثم بعد ذلك في دالة ال Show قمنا بأسترجاع النص المكتوب عن طريق الدالة text ،

ثم العرض في MessageBox .

ونفذ البرنامج.

التطبيق في المرفقات ..

يتبع بأذن الله

MyP2.rar

تم تعديل بواسطه SudaNix
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــة

نكمل مع درس صغير .. عالماشي ..

راح نستخدم Qt Creator في عمل تطبيق بسيط ،،

راح نطبق بعض الطرق في ادخال القيم من كتاب Foundations of Qt Development .

هذه هي واجهة ال Qt Creator

post-47438-1225865425_thumb.jpg

من قائمة File اختر New ،

ثم اختر :

post-47438-1225865461_thumb.jpg

ثم حدد الاسم و مكان الخزن

post-47438-1225865504_thumb.jpg

ثم Next

من الواجهة التي ستظهر لا تختر شيئ لأننا لن نحتاج اليه فقط اضغط Next

post-47438-1225865538_thumb.jpg

ثم من الواجهة التي ستظهر اختر QDialog كـ Base class

post-47438-1225865578_thumb.jpg

،،

الان ستظهر لك ملفات البرنامج ،،

اضغط دبك كلك على dialog.ui ليفتح لك جزء التصميم ،،

و اضف 3 ازرار كما في الصورة

post-47438-1225865606_thumb.jpg

و غير ال objectName لهم الى textButton,, intButton,, itemButton على التوالي.

انتقل الى ملف الهيدر و أضف الكود كما في الصورة:

post-47438-1225865636_thumb.jpg

ثم في ملف السورس اضف

post-47438-1225865679_thumb.jpg

post-47438-1225865707_thumb.jpg

#include "dialog.h"

Dialog::Dialog(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
ui.setupUi(this);
connect(ui.textButton ,SIGNAL(clicked()), this , SLOT(InputText()));
connect(ui.intButton,SIGNAL(clicked()), this , SLOT(InputNum()));
connect(ui.itemButton ,SIGNAL(clicked()), this , SLOT(ChooseItem()));
}

Dialog::~Dialog()
{

}
void Dialog::InputText()
{
bool ok;
QString text = QInputDialog::getText(
this,
tr("string"),
tr("Enter your name:"),
QLineEdit::Normal,
tr("Alingsas"),
&ok);
if ( ok && !text.isEmpty())
QMessageBox::information(this,"Input", " Hello " + text);
}
void Dialog::InputNum()
{
bool ok;
QStringList items;
items << tr("foo") << tr("Bar") << tr("Baz");
QString item = QInputDialog::getItem(
this,
tr("Item"),
tr("Pick an item:"),
items,
0,
false,
&ok);

if ( ok && !item.isEmpty())
QMessageBox::information(this,"Input", item);
}
void Dialog::ChooseItem()
{
bool ok;
int value = QInputDialog::getInteger(
this,
tr("Integer"),
tr("Enter an angle."),
90,
0,
360,
1,
&ok);
if(ok)
QMessageBox::information(this,"Input",QString::number(value));

}

نفذ البرنامج و ستفهم الكود :P

بسيط لا يحتاج لشرح

MyP.rar

تم تعديل بواسطه الاخير زمانه
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــة

نكمل ان شاء الله ،،

التطبيق البسيط الذي سنكونه

post-47438-1225959487_thumb.jpg

أي سنتعامل ببساطة مع ال Check Box و ال Radio Button .

- كون مشروع جديد

- افتح ال Qt Designer وكون ال dialog كما في الصورة التي في الاعلى (اظن واضحة ولا تحتاج الى شرح)

- اضغط على زر Exit و من نافذة ال Property Editor احذف التأشير من امام خاصية ال enabled ليصبح الزر غير مفعل كما في الصورة التي بالاعلى.

- انتقل الى Edit Signals/Slots (اذا نسيت كيف .. اضغط على F4) واربط زر Exit مع دالة الخروج close

post-47438-1225959564_thumb.jpg

غير ال objectName لل widget كالآتي

Radio button 1 --> rdoMale

Radio button 2 --> rdoFemale

Show button --> showButton

Exit button --> exitButton

الان اخزن البرنامج و عد الى QDevelop لأضافة الكود اللازم.

في ملف الهيدر اضف

post-47438-1225959629_thumb.jpg

وفي ملف السورس كود

post-47438-1225959707_thumb.jpg

بالنسبة لدالة ال Show نقوم بالتأكد لمعرفة أي ال radio button مختار لنظهر اسمه في Message Box ، نتأكد بأستخدام دالة isChecked() .

اما دالة EnabledExit ، فنفحص اذا كان ال ckeck box مؤشر نقوم بتفعيل زر الخروج ، وعندما نحذف التأشير يتم تعطيل زر الخروج.

طبعا هذه الدالة EnabledExit تتنفذ كلما اشرنا او حذفنا التأشير ، لأن في كل مرة سيتولد stateChanged والذي ربطناه مع دالتنا عن طريق دالة connect .

طبعا اعود و اكرر ..

هذه الدروس فقط لترشدك لأول الطريق ،، للمزيد اذهب الى Qt Assistant

و ابحث عن مثلا .. QCheckBox ،،

لتتعرف على جميع الدوال و الخصائص لهذا ال widget .

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــة

على بركة الله .. مستمرين معكم

واجهة التطبيق الذي سنكونه ان شاء الله

post-47438-1226070529_thumb.jpg

التطبيق بسيط كالعادة ،،

سيكون لدينا List Widget (و هي ال list التي ستحوي على ال items) .

سيكون لدينا Line Edit لأدخال قيمة item المضاف ،

وايضا ثلاث ازرار ، واحد للأضافة واخر لحذف عنصر معين و زر لمسح جميع العناصر.

- كون مشروع جديد وافتح ال Qt Designer وكون التطبيق كما في الصورة التي في الاعلى.

- انتقل الى edit Signals/Slots واضغط بالماوس على زر delete all واسحب الماوس و افلته داخل ال ListWidget .

post-47438-1226070562_thumb.jpg

ومن النافذة التي ستظهر حدد .. كما في الصورة

post-47438-1226070608_thumb.jpg

هذه الدالة ستقوم بمسح جميع العناصر من داخل ال list .

الان اخزن البرنامج وعد الى QDevelop لأضافة الكود اللازم.

في ملف الهيدر

post-47438-1226070635_thumb.jpg

و في ملف السورس

post-47438-1226070663_thumb.jpg

اول سطرين اضافة دالة connect ،، صارت قديمة !!!

في دالة AddItem نأخذ ما مكتوب في ال Line Edit ونضيفة الى ال list ،،

في دالة ال DeleteItem نقوم بحذف العنصر المؤشر علية بالماوس.

التطبيق في المرفقات.

يتبع بأذن الله

MyP4.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه

نكمل بعون الله ،،

سنتعلم كيفية فتح ال common dialog بصورة بسيطة (فقط طريقة العرض) على ان نطبق هذا الدرس لاحقا في درس متقدم ان شاء الله ،، في عمل Editor بسيط او عمل برنامج بسيط لعرض الصور ..

طبعا ال common dialog هي موجودة في اغلب البرامج ،، عندما تختار open لفتح ملف معين ، او save لخزن ملف معين وهكذا.

نبدأ بالتطبيق ،

كون مشروع جديد وانتقل الى ال Designer واضف 5 ازرار كما في الصورة:

post-47438-1226413696_thumb.jpg

اخزن وانتقل الى ال QDevelop لأضافة الكود اللازم.

في ملف الهيدر اضف

post-47438-1226413728_thumb.jpg

و ملف السورس سيكون كالاتي:

#include "commonDlg.h"
//
CommonDlg::CommonDlg( QWidget * parent, Qt::WFlags f)
: QDialog(parent, f)
{
setupUi(this);
connect(openButton,SIGNAL(clicked()), this , SLOT(Open()));
connect(saveButton,SIGNAL(clicked()), this , SLOT(Save()));
connect(opnDirButton ,SIGNAL(clicked()), this , SLOT(OpenDir()));
connect(colorButton,SIGNAL(clicked()), this , SLOT(SetColor()));
connect(fontButton,SIGNAL(clicked()), this , SLOT(SetFont()));
}
//
void CommonDlg::Open()
{
QString filename = QFileDialog::getOpenFileName( this,
tr("Open Document"),
QDir::currentPath(),
tr("Document files (*.doc *.rtf);; All files(*.*)"));
if (!filename.isNull())
QMessageBox::information(this , "Open ",filename);
}
void CommonDlg::Save()
{
QString filename = QFileDialog::getSaveFileName( this,
tr("Save Document"),
QDir::currentPath(),
tr("Documents (*.doc)"));
}
void CommonDlg::OpenDir()
{
QString filename = QFileDialog::getExistingDirectory( this,
tr("Select a Directory"),
QDir::currentPath());
if (!filename.isNull())
QMessageBox::information(this , "Open Dir ",filename);
}
void CommonDlg::SetColor()
{
QColor color = QColorDialog::getColor(
Qt::yellow,
this );
if (color.isValid() )
{
}
}
void CommonDlg::SetFont()
{
bool ok;
QFont font = QFontDialog::getFont(
&ok,
QFont ( " Arial", 18 ),
this,
tr("Pick a font"));
if(ok)
{
}
}

طبعا الامر واضح وبسيط ،

فقط استدعاء الدالة المسؤولة عن عرض ال dialog.

مستقبلا ان شاء الله سنتعلم كيف يمكن ان نستفاد من هذه ال dialogs في تطبيق عملي.

اذا قدر الله لنا الاستمرار.

MyP7.rar

تم تعديل بواسطه الاخير زمانه
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه

التطبيق هذه المرة سيكون عبارة عن الة حاسبة بسيطة بأربع عمليات

post-47438-1226414706_thumb.jpg

الجديد هو التعامل مع ال Combo Box

وهو الذي سيحوي على اسماء العمليات.

- كون مشروع جديد و انتقل الى ال Qt Designer .

- اضف 2 labels ,, 2 Line Edit ,, ComboBox ,, Push Button

- اضغط بالزر الايمن على ال combo box و اختر Edit Items

post-47438-1226414727_thumb.jpg

من النافذة التي ستظهر اضغط على علامة + لأضافة عنصر جديد ،، اضف اربع عناصر كما في الصورة

post-47438-1226414738_thumb.jpg

اخزن البرنامج وانتقل الى QDevelop ..

في ملف الهيدر اضف ..

post-47438-1226414749_thumb.jpg

وفي ملف السورس

اضف الكود

post-47438-1226414763_thumb.jpg

void DialogCalc::calcResult()
{
long Num1,Num2;
Num1 = txtNum1->text().toLong();
Num2 = txtNum2->text().toLong();
if(comboBox->itemText(comboBox->currentIndex()) =="Add")
QMessageBox::information(this ,"Result",QString::number(Num1 + Num2));
else
if(comboBox->itemText(comboBox->currentIndex()) =="Sub")
QMessageBox::information(this ,"Result",QString::number(Num1 - Num2));
else
if(comboBox->itemText(comboBox->currentIndex()) =="Mul")
QMessageBox::information(this ,"Result",QString::number(Num1 * Num2));
else
if(comboBox->itemText(comboBox->currentIndex()) =="Div")
QMessageBox::information(this ,"Result",QString::number(Num1 / Num2));
}

في هذه الدالة ،، اولا نحول القيمة المدخلة من string الى قيمة عددية عن طريق استخدام الدالة toLong() ،

من ال Assistant ،، هذه الدالة

long QString::toLong ( bool * ok = 0, int base = 10 ) const
Returns the string converted to a long using base base, which is 10 by default and must be between 2 and 36, or 0. Returns 0 if the conversion fails.
If a conversion error occurs, *ok is set to false; otherwise *ok is set to true.
If base is 0, the C language convention is used: If the string begins with "0x", base 16 is used; if the string begins with "0", base 8 is used; otherwise, base 10 is used.
Example:
QString str = "FF";
bool ok;
long hex = str.toLong(&ok, 16); // hex == 255, ok == true
long dec = str.toLong(&ok, 10); // dec == 0, ok == false

ثم بعد ذلك نحدد أي عملية مختارة و على اساسها نقوم اما بالجمع او الطرح او ...

وعندما نعرض القيمة نعيد تحويلها الى string ثم نعرضها ب MessageBox ،،

التحويل الى string عن طريق QString::numbe .

MyP5.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بسم الله ما شاء الله عليك اخى الاخير زمانه والله بارك الله فيك حقيقتا اتمنى استمرارك فى طرح اكبر عدد من التطبيقات على ال Qt وفقك الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه

اشكرك اخي احمد ، جزاك الله خيرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه

في هذا الدرس سنكون برنامج يحوي Main Window و سنضيف Text Edit ، وايضا سنتعلم كيفية التعامل مع ال menu واضافة Toolbar .

كون مشروع جديد ، لكن هذه المرة من الواجهة التي تظهر اختر Application with Main Window

.

post-47438-1226815744_thumb.jpg

انتقل الى ال Qt Designer

ومن قائمة ال Widgets اضف Text Edit و غير حجمه كما في الصورة

post-47438-1226815783_thumb.jpg

لاحظ في اعلى النافذة يوجد Type Here ، وهذه لأضافة عناصر ال Menu ،

اضغط دبل كلك على مكان Type Here و اكتب File ثم اضغط Enter ، اضف عنصرين لهذه القائمة هما Open و Exit كما في الصورة.

post-47438-1226815819_thumb.jpg

لاحظ ايضا في الجهة اليمنى من ال Qt Designer يوجد نافذة Action Editor للتعامل مع القوائم.

(اذا لم تكن موجودة يمكنك اظهارها بأختيارها من قائمة Tools)

post-47438-1226815869_thumb.jpg

الان لأضافة Toolbar اضغط بزر الماوس الايمن في اسفل النافذة على الشريط و اختر من القائمة Add Tool Bar

كما في الصورة

post-47438-1226815936_thumb.jpg

سيضاف شريط جديد اعلى النافذة (اسفل القائمة)

الان من ال Action Editor هناك عمود اسمه ToolTip من خلاله اختر Open واضغط عليه بالماوس واسحبه و أفلته داخل ال Toolbar الجديد الذي كونته.

post-47438-1226815980_thumb.jpg

لاحظ كيف سيضاف اختيار Open الى ال Toolbar

post-47438-1226816014_thumb.jpg

اترك ال Qt Designer كما هي واذهب الى ال QDevelop

ومن نافذة ال Project Explorer

اضغط كلك يمين على اسم المشروع واختر Add New Item

post-47438-1226816059_thumb.jpg

ومن النافذة التي ستظهر اختر Resources

post-47438-1226816094_thumb.jpg

سيضاف فايل جديد للمشروع اكتب بداخله كما في الصورة

post-47438-1226816142_thumb.jpg

طبعا هذا الهدف من وراءه اننا سنضيف ايقونة للبرنامج ، مكان الصورة هي في مجلد اسمه images موجود مع ملفات البرنامج (قد كونته مسبقا وهو يحوي على الصورة بداخلة ، أي يجب ان تكون المجلد قبل عمل هذه الخطوة ، وهو موجود في المرفقات ضمن البرنامج يمكنك نقله من هناك)

post-47438-1226816178_thumb.jpg

الان نرجع ال Qt Designer ،

نذهب الى نافذة Action Editor ونضغط دبل كلك على actionOpen

post-47438-1226816224_thumb.jpg

ستظهر لنا النافذة التالية ، نختر منها علامة النقاط (...) ، - أي الذي يمثل زر Browse –

post-47438-1226816269_thumb.jpg

ومن النافذة التي ستظهر نختر Edit Resources (علامة القلم)

post-47438-1226816312_thumb.jpg

ومن النافذة التي ستظهر نختار Open Resource File

post-47438-1226816353_thumb.jpg

ونقوم بتحديد ملف ال resource الذي قمنا بتكوينه من خلال ال QDevelop قبل قليل .

post-47438-1226816388_thumb.jpg

لا حظ كيف اضيف الملف

post-47438-1226816422_thumb.jpg

ثم اضغط على ok و ok و ok !!

والنتيجة ، لاحظ كيف اضيف الايقون الى ال Toolbar بدل كلمة open .

post-47438-1226816462_thumb.jpg

يمكنك ان تشاهد الشكل النهائي للنافذة بالذهاب الى قائمة Form واختيار Preview

post-47438-1226816496_thumb.jpg

الان اغلق ال Qt Designer وارجع الى ال QDevelop

في نلف الهيدر اضف

post-47438-1226816611_thumb.jpg

في ملف السورس اضف

post-47438-1226816635_thumb.jpg

في دالة ال Open سنقوم بفتح ملف و عرض محتواه داخل ال Text Edit

We use the QIODevice::Text flag so that the editor can cope with the differences between Unix and Windows with respect to text files. Unix uses just a line feed (\n) to separate lines, whereas Windows in addition requires the control character for a carriage return (\r\n). Qt classes are internally based on Unix conventions wherever possible, which is why QTextEdit only works with line feeds, and so we have QFile remove all the carriage returns when it opens a text file on Windows platforms by specifying QIODevice::Text.
Now the readAll() method reads the entire contents of the file into a QByteArray. We could import this directly into the textWidget, using setPlainText(), but we do not knowthe encoding format of the files. QByteArray contains the text in its 8-bit encoding, while QString uses 16-bit Unicode characters. In Windows, text files are normally saved in UTF-8 format. This mirrors the Unicode characters in 8-bits, and is compatible to ASCII encoding. In Linux, text files are available either as UTF-8 or in country-specific encoding, such as ISO Latin 1 (also known as ISO 8859-1). For the sake of simplicity, this application assumes that files are always encoded in UTF-8 and therefore converts the text contents using QString::fromUtf8() into a QString.

(.The.Art.of.Building.Qt.Applications.)

MyP8.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ساتوقف الى هذا الحد ،

سأكون مشغول في الايام القادمة بتعلم أشياء غير ال Qt ،،

ربما اكمل مستقبلا ،، اذا عدت لقراءة ال Qt .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ساتوقف الى هذا الحد ،

سأكون مشغول في الايام القادمة بتعلم أشياء غير ال Qt ،،

ربما اكمل مستقبلا ،، اذا عدت لقراءة ال Qt .

شيئ مؤسف صراحة

عموما كفيت ووفيت وننتظر رجوعك

سائلا المولى لك التوفيق في كل مافيه صلاحك وصلاح هذه اللأمة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اشكرك اخي محمد ،، و جزاك الله كل خير.

البركة فيك أن شاء الله.

سيكون لي عودة مستقبلا ان شاء الله ،،

ف ال Qt جميلة وتفيدني عالينكس

تم تعديل بواسطه الاخير زمانه
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه ،،

رغم ان الامر بسيط ، لكن لا مانع من ذكره هنا للفائدة.

زر لأطفاء الحاسبة

post-47438-1248024604_thumb.jpg

الكود الخاص به

	QProcess turnoff;
turnoff.execute("ShutDown.exe",QStringList()<<"-s");

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
السلام عليكــم ورحمـة الله وبركاتــه ،،

مرحبا لعودتك اخى واتمنى منك عدم التوقف

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وأتمنا ذلك أيضا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا احمد ،، محمد ،،

لقد عدت راغما الى ال Qt B)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سؤال يا إخوان : ما هو نوع licence لاستعمال Qt و ماثمنها في حال ما إذا رغبنا في بيع برنامج أنشأناه ب Qt؟

شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ما هو نوع licence لاستعمال Qt و ماثمنها في حال ما إذا رغبنا في بيع برنامج أنشأناه ب Qt؟

يوجد ثلاث تراخيص لكيوتي : GPL , LGPL وهما رخص حرة ، ويوجد الترخيص التجاري Commercial .

الترخيص التجاري لا يقدم لك شيء اضافي سوى الدعم الفني وبعض الحلول الخاصة ، والان أصبح غير مجدي تقريبا وكانت فائدته قبل ان تشتري نوكيا شركة trolltech وتضيف الرخصة LGPL حيث انه كان يسمح لك بكتابة برامج مغلقة المصدر.

الرخصة GPL تشترط عليك ان تفتح المصدر Source code سواءا كان المشروع تجاري ام غيره .

اما LGPL لا تشترط عليك ان تفتح الكود.

لذلك كل ما عليك هو ان تحمل Qt SDK النسخة LGPL / Free ، وبرمج بها ما تريد وبيع ما تريد ، وأغلق الكود او افتحه "على كيفك".

http://www.qtsoftware.com/downloads

وكل ذلك مجانا !

بل ويمكنك ان تعيد ترجمة مشروعك ليعمل على ويندوز ولينكس وماك وجوالات win CE و جوالات S60 و الجوالات التي تعمل بلينكس واجهزة لينكس المضمنة :lol:

والى اللقاء.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكراً اخي زيد بارك الله بيك...و مجهود ملموس وواضح...

شكراً اخي sudanix

عاملة مشاركة قبل شوي بخصوص كيوت... كنت خايفة ما يسألوني عن الرخصة... وما كنت عارفة رخصة LGPL

لم تكن واضحة بالنسبة إلي كتير... لم اكن مهتمة بالرخصة كتير...

:happy:

:ty:

موفقين يارب

تم تعديل بواسطه ♥رغـد♥
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا أخي SudaNix على هذه التوضيحات فمند سماعي بالـ Qt أردت أن أجربه بعد أن قرأت القليل عنه و لكن الخوف من أن تكون licence غالية الثمن جعلني أتردد...

الآن يمكنني تجربتها.

شكرا أخي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي العزيز ...شكراُ لشرحك المميز....وارجو التوضيح

هل الـ Qt Designer و QDevelop هما بنفس البرنامج ام كل واحد منفصل عن الاخر؟ واذا كانا منفصلان فكيف يمكن التنسيق بينهما (دمج الكود مع التصميم)؟

وبالنسبة لـ البرنامج Qt SDK النسخة LGPL / Free الخاصة بالوندوز. هل يعتبر بيئة تطويرية كاملة...اي لااحتاج بعدها الي اي كومبايلر...يعني يعطيني مباشرتاً برنامج تنفيذي كامل ؟ يعمل بدون اي مكتبات اضيفها الى البرنامج او للوندوز؟

ارجو ان اجد اجابة شافية..كوني مبتديء واريد تطبيق ماشرحته حضرتك .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .