|
|
|
الإدخال والإخراج لبيانات الفئات |
|
لسلام عليكم ورحمة الله وبركاته
الإدخال والإخراج لبيانات الفئات
عندما تريد حفظ متغيرات من نوع "أ" في ملف ومن ثم تقرأها في وقت آخر أو حين تريد
تبادل بيانات من نوع "أ" عبر الشبكة فإنك بحاجة الى نقل البيانات الثنائية بطريقة
تسهل عليك التعامل معها وتوفر لك الوقت...
فمثلا في الفئات QFont و QColor و ...... الخ تم توفير المعاملين
الأول للكتابة من الفئة الى ملف او الى QByteArray او QIODevice او .... الخ
والثاني للقراءة من ملف أو من QByteArrayاو QIODevice او .... الخ .
مثال
وبالتأكيد البيانات التي يتم حفظها بيانات ثنائية أي لو أنك حفظتها على ملف فإنه
ملف ثنائي ...
والهدف الآن هو كيف تقوم أنت ببناء أسلوب أكثر ديناميكية في الإدخال والإخراج
للفئات التي قمت أنت بتصميمها ...
خطوات العمل
1- بناء الفئة
2- التصريح عن الفئة ضمن metaType
3- بناء معاملات الإدخال والإخراج
4- تسجيل الفئة ضمن meta type stream operators
أولا بناء الفئة:-
class A{ public: A(){} qint32 age; };
|
ثانيا التصريح عن الفئة ضمن metaType :-
ثالثا بناء معاملات الإدخال والإخراج :-
out<<a.name<<(qint32)a.age; return out; } in>>a.name>>a.age; return in; }
|
رابعا تسجيل الفئة ضمن meta type stream operators :-
qRegisterMetaTypeStreamOperators<A>("A");
|
والآن أصبح بإمكانك القراءة والكتابة مع الفئة A بكل يسر وسهولة سواء مع الملفات او
القراءة والكتابة عبر الشبكة أو حتى كمتغير .QByteArray
مثال شامل:-
#include <QtCore> class A{ public: A(){} qint32 age; }; Q_DECLARE_METATYPE(A); out<<a.name<<(qint32)a.age; return out; } in>>a.name>>a.age; return in; } int main(int argc, char *argv[]) { qRegisterMetaTypeStreamOperators<A>("A"); A from,to; from.name="mohammed alabdaly"; from.age=20; QMetaType::save(ds ,qMetaTypeId <A >(),&from );//كتابة بيانات المتغير QMetaType::load(ds2 ,qMetaTypeId <A >(),&to );//قراءة بيانات المتغير qDebug ()<<QObject::tr("%1,%2"). arg(to. name). arg(to. age); return app.exec();
|
| إسم الكاتب |
تاريخ الإضافة |
التقييم / المقيمين |
زيارات الدرس |
| مصفوفة |
04/07/2009 |
0 / 0 |
724 |
|
|
|
|