>> الصفحة الرئيسية >> مقالات ZetCode >> [2] فئات Qt المساعدة

الأقسام الرئيسية

 التنصيب والاعداد التنصيب والاعداد
 دروس متقدمة دروس متقدمة
 سلسلة دروس للمبتدئين سلسلة دروس للمبتدئين
 اساسيات لغة سي++ اساسيات لغة سي++
 مقالات ZetCode مقالات ZetCode
 

جديد الدروس

 الوحدة QtUiTools (واجهة المستخدم ديناميكية التوليد)
التاريخ 04/07/2009 الوحدة QtUiTools (واجهة المستخدم ديناميكية التوليد)
 Qt and Phonon
التاريخ 04/07/2009 Qt and Phonon
 تتمة الرسائل ومربعات الحوار في qt
التاريخ 04/07/2009 تتمة الرسائل ومربعات الحوار في qt
 مدخل الى xml في Qt
التاريخ 04/07/2009 مدخل الى xml في Qt
 الإدخال والإخراج لبيانات الفئات
التاريخ 04/07/2009 الإدخال والإخراج لبيانات الفئات
 

[2] فئات Qt المساعدة



في هذا الدرس سنتكلم عن فئات Qt المساعدة المتوفرة في مكتبة Qt.

تتكون مكتبة Qt من مجموعة كبيرة من الفئات المساعدة ، التي تساعد المبرمجين على اداء اعمالهم.
وهذه الفئات تتضمن فئات للتعامل مع السلاسل النصية Strings، الملفات Files، ملفات XML ، الجداول Streams ، قواعد البيانات Databases او الشبكات Network.
وهنا سنستعرض فقط مجموعة من هذه الفئات .

يمكن ان تستخدم مكتبة Qt لانشاء برامج Console او تطبيقات ذات واجهة رسومية GUI.
وفي هذا الدرس ، سنوضح بعض من الفئات المساعدة في تطبيقات Console.


طباعة نصوص في الـ Console ]

هذا تطبيق Console بسيط ، يقوم بطباعة بعض النصوص في نافذة الـ Console.

  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5. std::cout << "Console Applicationn";
  6. return 0;
  7. }


وفيه استخدمنا فئات الاخراج Output للغة سي++.


  1. #include <QTextStream>
  2.  
  3. int main()
  4. {
  5. QTextStream out(stdout);
  6. out << "Console Applicationn";
  7. return 0;
  8. }



في المثال السابق ، قمنا بطباعة النص باستخدام فئات Qt.

النتيجة:
Console Application

ملاحظة :
اذا كنت تعمل في ويندوز ، قم باضافة السطر الاتي في ملف المشروع .pro
CONFIG += console


QFile]
تستخدم الفئة QFile للقراءة من الملف والكتابة عليه.

وفي المثال التالي سنكتب جملة في الملف :

  1. #include <QTextStream>
  2. #include <QFile>
  3.  
  4. int main()
  5. {
  6. QFile data("myfile");
  7.  
  8. if( data.open(QFile::WriteOnly) )
  9. {
  10. QTextStream out(&data);
  11. out << "You make me want to be a better man." << endl;
  12. }
  13. }



النتيجة عند فتح الملف :
You make me want to be a better man.


وفي المثال القادم سنقوم بقراءة محتوي ملف الى الـ Console .
والنصوص في الملف ستكون باللغة الانجليزية لذلك يجب ان نستخدم ال Codec المناسب:

  1. #include <QTextStream>
  2. #include <QFile>
  3.  
  4. int main()
  5. {
  6. QFile data("arabicFile");
  7.  
  8. QString line;
  9.  
  10. if( data.open(QFile::ReadOnly) )
  11. {
  12. QTextStream in(&data);
  13. QTextStream out(stdout);
  14.  
  15. in.setCodec("UTF-8");
  16. out.setCodec("UTF-8");
  17.  
  18. do
  19. {
  20. line = in.readLine();
  21. out << line << endl;
  22.  
  23. } while (!line.isNull());
  24. }
  25.  
  26. }


ملاحظة : لم استخدم اللغة العربية وذلك لان الـ Console لا يدعم اللغة العربية ، لكن في لينوكس يوجد بعض الطريق لكي تظهر الاحرف العربية بشكل صحيح.


QList
الفئة QList هي واحد من الفئات التي تعمل كحاويات Containers، وتستخدم لتخزين مجموعة من القيم ، وتوفر وصول سريع لمحتوياتها عن طريق رقم الـ Index ، ايضا هي سريعة في عمليات الاضافة والحذف.

  1. #include <QTextStream>
  2. #include <QList>
  3.  
  4. int main()
  5. {
  6. QTextStream out(stdout);
  7.  
  8. QList<QString> list;
  9.  
  10. list << "Hazem" << "Mohammad" << "Ahmad" << "Basem" << "Saleh" << "Ali" << "Null";
  11.  
  12. qSort(list);
  13.  
  14. for(int i=0;i<list.size();++i)
  15. out << list.at(i) << endl;
  16. }


النتيجة : عرض الاسماء مرتبة.


QDir
توفر الفئة QDir وصول الى محتوى المجلد وبنيته .

  1. #include <QTextStream>
  2. #include <QDir>
  3.  
  4. int main()
  5. {
  6. QTextStream out(stdout);
  7.  
  8. QString home=QDir::homePath();
  9.  
  10. out << home << endl;
  11.  
  12. return 0;
  13. }


النتيجة :
طباعة مسار مجلد الـ home.


وهذا مثال اخر ، نستخدم فيه QDir لعمل فلترة على محتويات المجلد :

  1. #include <QTextStream>
  2. #include <QDir>
  3.  
  4. int main()
  5. {
  6. QTextStream out(stdout);
  7. QDir dir;
  8.  
  9. QStringList filters;
  10. filters << "*.c" << "*.c~";
  11. dir.setNameFilters(filters);
  12.  
  13. QFileInfoList list = dir.entryInfoList();
  14.  
  15. for (int i = 0; i < list.size(); ++i)
  16. {
  17. QFileInfo fileInfo = list.at(i);
  18. out << QString("%1").arg(fileInfo.fileName());
  19. out << endl;
  20. }
  21.  
  22. return 0;
  23. }


النتيجة :
طباعة اسماء الملفات التي تحمل الامتداد .c و .c~ فقط .



QTime
توفر الفئة QTime دوالا للتعامل مع الوقت .
وفي المثال التالي سنطبع الوقت الحالي في نافذة الـ Console :

  1. #include <QTextStream>
  2. #include <QTime>
  3.  
  4. int main()
  5. {
  6. QTextStream out(stdout);
  7.  
  8. QTime qtime=QTime::currentTime();
  9. QString stime=qtime.toString(Qt::LocalDate);
  10.  
  11. out << stime << endl;
  12.  
  13. return 0;
  14. }



QString
تعتبر من اهم الفئات المساعدة في Qt وتستخدم للتعامل مع السلاسل النصية .

  1. #include <QTextStream>
  2.  
  3. int main()
  4. {
  5. QString a = "Welcom ";
  6. QString b = "to ";
  7. QString c = "www.qt-ar.orgn";
  8.  
  9. QTextStream out(stdout);
  10. out << a + b + c;
  11.  
  12. return 0;
  13. }


النتيجة:
Welcom to http://www.qt-ar.org


وفي المثال التالي سنقوم ببناء سلسلة عن طريق اضافة عدة جمل في نهايتها .

  1. #include <QTextStream>
  2.  
  3. int main()
  4. {
  5. QString string = "Whether I shall ";
  6.  
  7. string.append("turn out to be the hero of my own life, n");
  8. string.append("or whether that station will be held by anobody else, n");
  9. string.append("these pages must show.n");
  10.  
  11. QTextStream out(stdout);
  12. out << string;
  13.  
  14. return 0;
  15. }


النتيجة :
Whether I shall turn out to be the hero of my own life,
or whether that station will be held by anobody else,
these pages must show.


والمثال التالي سيوضح كيفية وضع قيم متغيرات داخل السلسة النصية :

  1. #include <QTextStream>
  2.  
  3. int main()
  4. {
  5. QString string = "What if I gave you %1 red roses?";
  6. int num = 21;
  7.  
  8. QTextStream out(stdout);
  9. out << string.arg(num) << endl;
  10.  
  11. return 0;
  12. }


النتيجة :
What if I gave you 21 red roses?


والمثال التالي سيوضح كيفية تحديد طول السلسة النصية :

  1. #include <QTextStream>
  2.  
  3. int main()
  4. {
  5. QString string = "The history of my life.";
  6.  
  7. QTextStream out(stdout);
  8. out << "The string has " + QString::number(string.size())+ " characters." << endl;
  9.  
  10. return 0;
  11. }


النتيجة :
The string has 23 characters.


والمثال الاخير سيوضح كيفية طباعة السلسة بحروف كبيرة Upper case وحروف صغيرة Lower case

  1.  
  2. #include <QTextStream>
  3.  
  4. int main()
  5. {
  6. QString string = "The history of my life.";
  7.  
  8. QTextStream out(stdout);
  9. out << string.toLower() << endl;
  10. out << string.toUpper() << endl;
  11.  
  12. return 0;
  13. }



النتيجة :
the history of my life.
THE HISTORY OF MY LIFE.

++++++++++++++++++++++++++++

ترجمة "بتصرف".

إسم الكاتب تاريخ الإضافة التقييم / المقيمين زيارات الدرس
SudaNix 21/12/2008 0 / 0 844

الأكثر زيارة

 دليل تنصيب اطار عمل Qt ، حزمة MinGW ، بيئة التطوير QDevelop
الزيارات 2849 دليل تنصيب اطار عمل Qt ، حزمة MinGW ، بيئة التطوير QDevelop
 اعداد وتنصيب Qt
الزيارات 2627 اعداد وتنصيب Qt
 دليل تنصيب اطار عمل Qt ، حزمة MinGW ، بيئة التطوير Eclipse
الزيارات 2577 دليل تنصيب اطار عمل Qt ، حزمة MinGW ، بيئة التطوير Eclipse
 التطوير السريع للتطبيقات Rapid Application Development
الزيارات 2420 التطوير السريع للتطبيقات Rapid Application Development
 C++ In a Nutshell
الزيارات 2293 C++ In a Nutshell
 

الأكثر تصويتـا

 اعداد وتنصيب Qt
نتيجة التصويت 40 من 5 شخص اعداد وتنصيب Qt
 تخطيط البرامج Program Layout
نتيجة التصويت 40 من 6 شخص تخطيط البرامج Program Layout
 الدرس الاول : كتابة اول برنامج
نتيجة التصويت 29 من 3 شخص الدرس الاول : كتابة اول برنامج
 التطوير السريع للتطبيقات Rapid Application Development
نتيجة التصويت 29 من 4 شخص التطوير السريع للتطبيقات Rapid Application Development
 الدرس الثالث:تعريف slot جديدة
نتيجة التصويت 27 من 3 شخص الدرس الثالث:تعريف slot جديدة
 
 

سكربت story-script v1 برمجة bwady.com تطوير SudaNix