الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

محتج درس في Qt

بدأه Pr MoHaMeD في 10 سبتمبر 2010 · 8 رد · 1,208 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عيدكم مبارك و كل عام و انتم بخير

اما بعد انا من محبي لغة سي++ وانتقل مأخرا لمكتبة Qt

ووجدت امثلة ديمو كثيره عندما ثبت البرنامج و اعجبت بيهم و اصبح همي ان ابرمج واحد مثلهم مثل متصفح او محرر نصوص

فبحثت في النت لم اجد دروس واضحه

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

انا انتظركم بفارغ الصبر

لدي سؤال على برمج الديمو الموجودعه مع البرنامج هل استطيع التعديل عليها لاني وجدتها مفتوحة المصدر

#2

و ايضا تلك البرمجيات البسيطه الموجوده مع المكتبه فهي كثيره جدا هل يمكنني ان اعتمده على واحده منهم لابدا مشروعي او لا يمكن ذلك فمثلا ذلك المتصفح البسيط انا اضيف فيه اشياء حتى اجعله افضل بكثير ثم اضعه على النت هل ترفض الشركه او لا ان محتاج مساعدتكم بسرعه

#3

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

وكل عام وانت بخير.

اقتباس
فبحثت في النت لم اجد دروس واضحه

العديد من الأمثلة مشروحة

http://doc.qt.nokia.com/4.7-snapshot/all-examples.html

بالإضافة الى وجود tutorials يمكنك استخدامها كبداية لتعلم كيوت

http://doc.qt.nokia.com/4.7-snapshot/tutorials.html

بعد ذلك يمكنك قراءة الكتب والاستعانة بال docs لكتابة البرامج.

اقتباس
لذلك اريد درس يشرح برمجة متصفح جد بسيطه

استخدم وحدة QtWebKit في كيوتي فهي توفر render engine لل CSS, (X)HTML (بالاعتماد على محرك webkit)

QWebView *view = new QWebView(parent);
     view->load(QUrl("http://qt.ar.org"));
     view->show();

اقتباس
لدي سؤال على برمج الديمو الموجودعه مع البرنامج هل استطيع التعديل عليها لاني وجدتها مفتوحة المصدر

نعم يمكنك ذلك فهي تحت رخصة BSD وكذلك بالنسبة للأمثلة مرخصة ب LGPL.

اقتباس
و ايضا تلك البرمجيات البسيطه الموجوده مع المكتبه فهي كثيره جدا هل يمكنني ان اعتمده على واحده منهم لابدا مشروعي او لا يمكن ذلك فمثلا ذلك المتصفح البسيط انا اضيف فيه اشياء حتى اجعله افضل بكثير ثم اضعه على النت هل ترفض الشركه او لا ان محتاج مساعدتكم بسرعه

لا ترفض طبعا .

حاليا وبما أنك مبتدئ في كيوتي فيفضل أن تتعلم الأساسيات أولا من انشاء البرامج وال widgets وال signal/slot وبعدها إبدأ في دراسة الأمثلة وتطبيق أفكارك.

بالتوفيق.

#4

لم افهم الجواب الاخير هو //لا ترفض طبعا//

لديها معنى انك نفيت ما قلته و قلت ترفض او اجابتك لا يعني هي لا ترفض يعني كل شيء مجاني

مشكوووور كثير على الافاده لكني سبق لي وبرمجت محرر نصوص جد جد بسيط اي استطيع انشاء النوافذ الخ

#5

لدي سؤال آخر انظر في هذه الصورة ذلك التصميم هل هو مصمم ووضعت اوامره في desigen او هذه فقط نافذه و اوامره في ملفات السورس و الهيدر

1284141386_jyh.JPG

تم تعديل هذه المشاركة بواسطة Pr MoHaMeD في 10 سبتمبر 2010 في 20:56

#6
اقتباس
لم افهم الجواب الاخير هو //لا ترفض طبعا//

لديها معنى انك نفيت ما قلته و قلت ترفض او اجابتك لا يعني هي لا ترفض يعني كل شيء مجاني

أعني أن الشركة لن ترفض ، ويمكنك دراسة ال demos وتعديلها أن أردت وإعادة توزيع النسخ المعدلة (بمقابل مادي أو بلا) ، بل ويمكنك استخدام هذه الأمثلة في برامج مغلقة المصدر (BSD License).

وبالنسبة للصورة فقم بارفاقها مجددا. لكن في كيوتي لا يمكنك كتابة شفرات بداخل برنامج التصميم Qt Designer ، فقط يمكنك من انشاء ال widgets وتعيين خصائصها بالإضافة الى انشاء مخطط أو قالب لهم Layout ، و تحديد بعضا من ال built-in signals/slots .

بعد ذلك يجب كتابة الشفرة واستدعاء ملف هيدر .h ( ناتج من الملف الذي تم تصميمه في ال Qt Designer ) حيث يقوم مترجم داخلي في كيوتي (يسمى UIC) بعملية التحويل هذه ، وكل ما على المبرمج هو استدعاء ملف الهيدر .h

وفقكم الله.

#7

قصدي انظر الى مجلد Forms سنجد history.ui اليس كذلك عندما ننظر للـheader نجد history.h عندما ننظر للـ sources نجد history.cpp ما هي العلاقة بين هذه الملفات انت قلت استدعاء ملف الهيدر فهمت هذ الجانب لكن ملف السورس هنا ما وظيفته اتنمى ان يكون السؤال واضح

و مشكوووور يا استاذ فعلا فضلت علي الكثير مشكوووووووووووووووووووووووووووووور لا اعرف كيف اشكرك تقبل اعطر تحياتي و احتراماتي

post-233063-087818100 1284194945_thumb.j

المرفقات
1284141386_jyh.JPG
#8

في كيوتي لكتابة أي فئة class يجب استخدام ملفين الاول ملف الهيدر .h يحوي تعريف الفئة والآخر ملف التطبيق .cpp ويحوي تعريف كل الدوال الموجودة في ملف الرأس .h.

لماذا ذلك ؟ لان هنالك ماكرو معين يسمى Q_OBJECT يجب استخدامه مع أي فئة تريد تعريف signal/slot خاص بها ، هذا الماكرو يبحث عنه مترجم داخلي في كيوتي (يسمى ب MOC) يعمل على تحويل كل الأوامر الخاصة بكيوتي (مثل المحدد signals وكذلك slots) الى ++standard C وبالتالي بعد عملية التحويل هذه يستطيع أي مترجم سي++ قياسي ترجمة الملف الناتج بلا مشاكل.

حاليا الملف الناتج من ال Designer هو ملف ui. يتم ترجمته داخليا الى ملف هيدر .h يحوي تعريف الفئة (بنفس الأسم الذي قمت بتسميه لل window في ال Designer) ، وكل ما عليك هو انشاء فئة جديدة (في ملف هيدر جديد) واستدعاء ملف الرأس الناتج من ملف .ui وكذلك انشاء ملف .cpp يحوي تعريف وعمل كل دالة.

ملاحظة: عند استدعاء ملف الرأس (يحوي الفئة 1) في الفئة الجديدة (نسميها 2 كمثال) يجب الاختيار ما بين الوارثة من الفئة 1 أو انشاء كائن منها بداخل الفئة 2. لماذا ؟ لان الفئة 1 الناتجة من .ui هي ليست فئة مرئية يمعنى أنها لا ترث من QWidget وبالتالي لا يمكن أظهار على الشاشة باستخدام show() ، وحل هذا هو أما أن ترث الفئة 2 من الفئتين QWidget والفئة 1 أو أن ترث من الفئة QWidget وتنشئ كائن من الفئة 1 بداخلها (وهو أفضل حل) بسبب أن الشفرة تكون أوضح خاصة فيما يتعلق بال widgets التي تم انشائها في Qt Designer يسهل تمييزها بسهولة ui->myWidget بدلا عن myWidget.

قد يظهر الكلام السابق معقدا مع أن العملية بسيطة جدا ، لذلك يمكنك مراجعة الدرس التالي مع أنه قديم بعض الشي لكن يظل مفيدا.

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

بالتوفيق.

#9

مشكووور اخي العزيز لا اعرف كيف اشكرك تقبل تحياتي

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