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

ممكن شرح هذا الكود البسيط

بدأه ahmed arkan في 6 أغسطس 2009 · 11 رد · 2,296 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ممكن توضيح الاسطر 1 و 2 و 6 من الكود التالي

skyiraq-2704e8f17d.jpg

والاستفسار الاخر ...عندما استبدل جملة Hello arabteam2000 بجملة مكتوبة باللغة العربية تظهر لي كتابات غير معروفة (غير عربية) عند تنفيذ البرنامج ...ماهو السبب لانني اعرف تماماً ان Qt تدعم اللغة العربية .

مع الشكر مقدماً

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#2

عليكم السلام...

آهه مزبوط هيك و بداية موفقة!

حسناً!

السطر رقم واحد هو عبارة عن تضمين الملف الرأسي لـ QApplication و هو ضروري لإنشاء أي برنامج (كيوتي)...فلازم بنستعملو لإنشاء كائن منه كما هو واضح بالسطر رقم ستة و اللي عم بتسأل عنه انت ايضاً. هذا الكائن app ضروري لأي تطبيق و برنامج معمول بواسطة (كيوتي).

أنا متعجبة ! المفروض بتسأل عن السطر رقم اتناعش كمان!

ok

السطر رقم اتنين بالزبط متل السطر رقم واحد و هو تضمين الملف الرأسي للصنف QPushButton لإنشاء كائن زرار كما هو واضح بالسطر رقم تمانية.

ملاحظة مهمة:

لكل صنف class بـ Qt هناك ملف رأسي header file بنفس إسم المصنف ولكن يبدأ بحرف Q.

متل الموجودة بمشاركتك بالصورة

و هناك ايضاً عـ سبيل المسال

QLabel

QString

QLineEdit

Q...

بخصوص اللغة العربية: نعم (كيوتي) بتدعم اللغة العربية و كل اللغات تقريباً ولكن ما فيك تهتم هلأ (الآن) بهالتفاصيل لأن هناك بعض الإضافة لبعض الخصائص و الأشيا لتحويل إلى اللغة العربية...

آسفة لتقصيري ولكن ربما يجيبك احد الأخوة بهالخصوص بالتفصيل

موفق يارب

bye

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#3

وعليكم السلام ،،

اقتباس
عندما استبدل جملة Hello arabteam2000 بجملة مكتوبة باللغة العربية تظهر لي كتابات غير معروفة (غير عربية) عند تنفيذ البرنامج

عليك بتغيير الترميز الى utf8 لان الترميز الافتراضي لكيوتي هو اللاتيني latin1 وهذا لا يدعم العربية.

َضع هذا السطر في بداية البرنامج بعد انشاء المتغير app

QTextCodec[color= #000000;]::[color= #808000;]setCodecForCStrings[color= #000000;](QTextCodec[color= #000000;]::[color= #808000;]codecForName[color= #000000;]([color= #A31515;]"UTF-8"[color= #000000;])[color= #000000;]);

ولا تنسى اضافة ملف الرأس QTextCodec.

بالتوفيق.

#4

الاخت " رغد "

شكراً جزيلاً على التوضيح ...وضحت الصورة لي ...وبالنسبة لـ

اقتباس
أنا متعجبة ! المفروض بتسأل عن السطر رقم اتناعش كمان!

انا توقعت انه هذا السطر البرمجي هو عبارة عن كود ختامي يكتب في نهاية اي برنامج .. ولكن يبدو من اجابتك ان له اهمية...بصراحة حاولت ان افهم وضيفته من الموقع الرسمي للـ Qt فلم اجد سوى شرح لم افهم مقصده

اقتباس
passes control to Qt. QCoreApplication::exec() will return when the application exits
اقتباس
In QCoreApplication::exec(), Qt receives and processes user and system events and passes these on to the appropriate widgets.

--------------------------

الاخ الكريم" SudaNix" اشكرك حقاً في مساعدتك لي وحاولت ان اعمل طريقتك وحدث تغيير في عرض اللغة ولكن ايضاَ غير مفهومة ... لاادري يمكن انا وضعت الكود في المكان الغير صحيح ... ارجو النظر في الصورة التالية

skyiraq-c2f4b16464.jpg

مع التقدير

تم تعديل هذه المشاركة بواسطة ahmed arkan في 6 أغسطس 2009 في 22:16

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#5

الكود صحيح 100% .

لكن عليك بتغيير ترميز المحرر في QtCreator ، حيث ان الاعدادات الطبيعية هي ان المحرر يعمل بترميز الجهاز وغالبا يكون ANSI .

الان افتح مشروعك وغير الترميز الى uft8 "كما في الصورة" ثم اغلق المشروع وافتحه مجددا ، وبعدها ستجد ان النص الذي كتبته بهذا الشكل ????

لانه تم تحويله الى utf8 ، وكل ما عليك الان هو ان تمسح النص وتكتب "مرحبا عرب تيم :wink: " .

post-60254-1249592652_thumb.png

الخطوات باختصار لدعم التطبيقات بالعربي :

1- تغيير ترميز السلاسل strings في كيوتي الى utf8

2- تغيير الترميز في محرر النصوص الى utf8 ايضا .

3- استخدام الدالة:

QApplication[color= #000000;]::[color= #808000;]setLayoutDirection[color= #000000;](Qt[color= #000000;]::[color= #808000;]RightToLeft[color= #000000;]);

لقلب اتجاه البرنامج من يسار-يمين الى يمين-يسار او ما يسمى بـ RTL .

وشكرا.

تم تعديل هذه المشاركة بواسطة SudaNix في 7 أغسطس 2009 في 00:21

#6

بعد اذن الاخت الكريمة رغد ،،

اقتباس
انا توقعت انه هذا السطر البرمجي هو عبارة عن كود ختامي يكتب في نهاية اي برنامج .. ولكن يبدو من اجابتك ان له اهمية...بصراحة حاولت ان افهم وضيفته من الموقع الرسمي للـ Qt فلم اجد سوى شرح لم افهم مقصده

بالنسبة لهذا السطر المهم جدا ، حيث يدخل البرنامج app في حلقة loop تسمى event loop ، في هذه الحلقة يكون البرنامج منتظر لأي حدث Event يقوم المستخدم بعمله لكي يرسله الى ال widget المطلوب .

مثلا حدث الضغط على الزر "موافق" يرسل الى الزر الذي تم الضغط عليه "زر موافق طبعا" ، و بعدها يقوم الزر "موافق" بارسال اشارة ضغط clicked signal ، هذه الاشارة اذا لم تقم بربطها مع دالة معينة slot فانها ستضيع في الهواء .

جرب الان ان تحذف هذا السطر ونفذ البرنامج ، ستجد انه يغلق فورا ولم ينتطر منك اي مدخلات .

اتمنى ان اكون وصلتك الفكرة بشكل بسيط ...

وهذا مثال بسيط لعرض ثلاث ازرار ، لكن من اليمين الى اليسار :wink:

post-60254-1249595011_thumb.png

بالتوفيق

تم تعديل هذه المشاركة بواسطة SudaNix في 7 أغسطس 2009 في 00:57

#7
SudaNix كتب:
بعد اذن الاخت الكريمة رغد ،،

إجابة كافية وينطيك العافية اخي Sudanix...ما كنت رايحة جاوب عـ سؤال الأخ الكريم بكل هالتفاصيل

بارك الله بك

ببساطة و إضافة زغيييرة:

بنقدر نعتبر السطر رقم اتناعش عبارة عن إعطاء زمام الأمور للتطبيق الحالي في إدارة الأحداث events و أمور تانية.

يعني البرنامج بيصير متل هالرسمة مع هالسطر و بينتظر الأحداث و التفاعلات مع البرنامج و بيعمل إدارة للبرنامج

آسفة للإطالة

موفقين يارب

bye

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#8

آهه آسفة

بالمناسبة ملاحظة كتييير مهمة:

لكل برنامج معمول بواسطة Qt هناك على الأكثر كائن واحد من الصنف QApplication

...بالزبط متل البرنامج الموجود بالموضوع

واحد بس مش أكتر

هَي من الأمور الأساسية اللازمة معرفتها

bye

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#9
skyiraq-2b7e4b30d9.jpg

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#10

السلام عليكم

لدي سؤال حول كود اخر ارجو شرحه... وهو الذي في السطر 19

sa-799756dabb.jpg

مع الشكر

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

#11

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

حسناً اخي...

ببساطة السطر رقم تسعتاش 19 عبارة عن عملية ربط الزرار بكامل التطبيق بواسطة الدالة connect و بآلية signal and slot

و هو عبارة عن ربط الحدث أو الإشارة signal الخاصة بالزرار و هي clicked بـ الـ slot الخاصة بكامل التطبيق و هي quit و هاد يعني عند الضغط عـ الزرار يتنفذ الـ signal و هي clicked ومن ثم يستدعي الـ slot الخاصة بالتطبيق و هي quit.

مش اكتر

لمزيد من المعلومات و التفاصيل

اتفضل

آلية Signal and Slot

و إزا بتسمح طبعاً لو عندك استفهامات عامة و تانية حول الآلية بتكتبهن بنفس الموضوع بالرابط

لتعميم الفائد و إثراء الموضوع اكتر!

ولكن هاد كل شي بخصوص السطر اياه

آسفة للتقصير

موفق يارب

bye

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#12

شكراً جزيلاً اختي الفاضلة رغد ..وماشاء الله موضوع شرح آلية Signal and Slot جميل جداً ومفيد ..وهذا ماكنت ابحث عنه.

***من الأفضل أن تمشي ببطء إلى الأمام على أن تمشي مسرعاً إلى الخلف***

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