Qt-ar_logo

فئات Qt المساعدة

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

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

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

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

#include <iostream>

int main()
{
    std::cout << "Console Application\n";
    return 0;
}

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

#include <QTextStream>

int main()
{
    QTextStream out(stdout);
    out << "Console Application\n";
    return 0;
}

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

النتيجة:
Console Application

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

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

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

#include <QTextStream>
#include <QFile>

int main()
{
    QFile data("myfile");
   
    if( data.open(QFile::WriteOnly) )
    {
        QTextStream out(&data);
        out << "You make me want to be a better man." << endl;
    }
}

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

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

#include <QTextStream>
#include <QFile>

int main()
{
    QFile data("arabicFile");
   
    QString line;
   
    if( data.open(QFile::ReadOnly) )
    {
        QTextStream in(&data);
        QTextStream out(stdout);
       
        in.setCodec("UTF-8");
        out.setCodec("UTF-8");
       
        do
        {
            line = in.readLine();
            out << line << endl;
           
        } while (!line.isNull());
    }
   
}

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

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

#include <QTextStream>
#include <QList>

int main()
{
    QTextStream out(stdout);
   
    QList<QString> list;
   
    list << "Hazem" << "Mohammad" << "Ahmad" << "Basem" << "Saleh" << "Ali" << "Null";
   
    qSort(list);
   
    for(int i=0;i<list.size();++i)
        out << list.at(i) << endl;
}

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

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

#include <QTextStream>
#include <QDir>

int main()
{
    QTextStream out(stdout);
   
    QString home=QDir::homePath();

    out << home << endl;
   
    return 0;
}

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

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

#include <QTextStream>
#include <QDir>

int main()
{
    QTextStream out(stdout);
    QDir dir;

    QStringList filters;
    filters << "*.c" << "*.c~";
    dir.setNameFilters(filters);

    QFileInfoList list = dir.entryInfoList();

    for (int i = 0; i < list.size(); ++i)
    {
        QFileInfo fileInfo = list.at(i);
        out << QString("%1").arg(fileInfo.fileName());
        out << endl;
    }
 
    return 0;
}

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

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

#include <QTextStream>
#include <QTime>

int main()
{
    QTextStream out(stdout);
   
    QTime qtime=QTime::currentTime();
    QString stime=qtime.toString(Qt::LocalDate);
   
    out << stime << endl;
   
    return 0;
}

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

#include <QTextStream>

int main()
{
    QString a = "Welcom ";
    QString b = "to ";
    QString c = "www.qt-ar.org\n";

    QTextStream out(stdout);
    out << a + b + c;
   
    return 0;
}

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

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

#include <QTextStream>

int main()
{
    QString string = "Whether I shall ";

    string.append("turn out to be the hero of my own life, \n");
    string.append("or whether that station will be held by anobody else, \n");
    string.append("these pages must show.\n");

    QTextStream out(stdout);
    out << string;
 
    return 0;
}

النتيجة:
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.

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

#include <QTextStream>

int main()
{
    QString string = "What if I gave you %1 red roses?";
    int num = 21;

    QTextStream out(stdout);
    out << string.arg(num) << endl;

    return 0;
}

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

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

#include <QTextStream>

int main()
{
    QString string = "The history of my life.";

    QTextStream out(stdout);
    out << "The string has " + QString::number(string.size())+ " characters." << endl;
   
    return 0;
}

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

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

#include <QTextStream>

int main()
{
    QString string = "The history of my life.";

    QTextStream out(stdout);
    out << string.toLower() << endl;
    out << string.toUpper() << endl;
 
    return 0;
}

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

___________________________________________
* ترجمة “بتصرف”.

http://zetcode.com/tutorials/qt4tutorial/utilityclasses

701 مشاهدة

مواضيع مشابهة