• 0
z.x.c

مافائدة ال Qt Designer؟

سؤال

السلام عليكم

برنامج الـ Qt Designer الذي يأتي مع مكتبة الـ Qt فيه العديد من الادوات الجميلة ... لكن لحد الان لم اجد شرح عن كيفية وضع اداة معينة (زر مثلاً) وربطه مع امر برمجي ... يعني اخواني ببساطة اريد ان اعمل زر (PushButton)على فورم وبضغط هذا الزر يحدث حدث معين كطباعة كلمة معينة على TextLabel فقط ... بدون ما ان اعمل ال (PushButton و TextLabel) برمجياً ...

تم تعديل بواسطه ahmed arkan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

16 إجابة على هذا السؤال .

  • 0

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

بالنسبة للمثال الذي ذكرته لايمكن تنفيذه بدون كتابة أكواد

وقبل أن أذكر لك التفصيل احب أن أعرفك بأنني مبتدا مثلك في qt

وقد كنت بدأت في تعلم البرمجة من خلال فيجوال ستوديو دوت نت ووجدت فيها الكثير من الأدوات والعمليات التي تتم بدون كتابة أي اكواد

ولكن عندما انتقلت إلى كيوتي صدمت عندما وجدت كل شيء بالكود تقريبا إلا النزر اليسير وقررت أن أتعلم كتابة الأكواد لأنني في الحقيقة رغم طول المدة التي قضيتها مع فيجوال ستوديو دوت نت لم استطع أن اخرج ببرنامج كامل مفيد = بصريح العبارة لم أتعلم شيئا في البرمجة

قررت أن أتعلم لغة السي بلس بلس وأن أتقنها وقد قطعت فيها شوطا لا بأس به وأسأل الله التيسير

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

بالنسبة للمثال الذي ذكرته :

أولا افتح Qt Creator

من قائمة file اختر new file or project

ثم اختر QT4 gui application

أكتب اسما للمشروع وحدد المسار الذي تريد حفظه فيه ثم اضغط على next ثم next ثم next ثم finsh

تم إنشاء المشروع الذي يتكون من ملف pro وثلاث مجلدات

قم بفتح المجلد forms ستجد بداخله الملف ui وهو النافذة التي ستقوم بإنشاء الأدوات عليها

وبالضغط على الملف ui مرتين سيتم فتحه بواسطة الديزاينر الموجود داخل كيوتي كريتور

قم بسحب زر PushButton ووضعه فوق النافذة

ثم قم بسحب Label وضعه على النافذة ايضا

يمكنك بالضغط على PushButton مرتين أن تقوم بتغيير الاسم

وكذلك يمكنك بالضغط على Label مرتين أن تقوم بتغيير الاسم

الآن أتينا إلى بناء الأحداث بدون أكواد فيوجد طريقتين لذلك

الطريقة الأولى من خلال النافذة signsal slots editor وستجدها بالأسفل

وتجد فيها بلس لونه أخضر عند الضغط عليه يقوم بإنشاء سجل يحتوي على أربعة حقول تستطيع ملؤها بالخيارات المتاحة

فمثلا :

اختر من الحقل الأول على الشمال PushButton

ومن الحقل الثاني الإشارة التي سيرسلها الـ_pushButton وهي clicked

ومن الحقل الثالث تختار Label وهي الأداة التي ستستقبل الإشارة المرسلة من الزر

ومن الحقل الرابع تختار الأثر الذي سيحصل للـ Label نتيجة استقباله للإشارة من PushButton

ويمكنك تغيير اختياراتك وتجربة البرنامج بالضغط على زر run الأخضر أو الضغط على كنترول آر ( ctrlمع r)

سأخبرك بالطريقة الثانية بعد أن تقوم بتنفيذ هذه الطريقة وتخبرني بالنتيجة

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

إذا لم يكون الشرح واضحا فسوف أفكر في عمل شرح بالصور أو الفيديو إن شاء الله

وأسألك الدعاء وجزاك الله خيرا

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

كما ذكر لك الاخ محمد عواد -مشكورا ، أنه يمكنك الربط بين اداتين عن طريق محرر signal/slot في برنامج designer ، لكن في أغلب الحالات هذا المحرر لا يفي بالغرض ويجب استخدام الكود لفعل ما تريد.

ستجد هنا مثال عملي على الموضوع وهو قديم ، لكن قد يفيد.

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

أيضا راجع هذا الدرس:

http://www.arabteam2000-forum.com/index.php?showtopic=190285

بالتوفيق.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخ الكريم محمد عواد ... اشكرك يااخي العزيز على هذه المساعدة الجميلة .... فقط بالنسبة لشرحك عندما اقوم بتطبيقه ... وتنفيذه ... لاتظهر لي الادوات التي قمت بادراجها في الفورم !! (يظهر لي فقط فورم فارغ)

وبالنسبة لـ

تم إنشاء المشروع الذي يتكون من ملف pro وثلاث مجلدات

تكونت لي في الحقيقة 4 ملفات

381736283.jpg

شكراً للاخوان الذين ساعدوني ايضا ... واحب ان اوضح ان غرضي ليس للتخلص من كتابة الكود .... كل غرضي هو للتحكم في شكل واماكن ادواتي التي اريدها تظهر في برنامجي (تحكم يدوي وليس برمجي ) .... مثلاً المثال التالي للاخت رغد حول كيفية ربط صندوق الفافة بالمزلاج .....

927836299.png

فمثلاً اريد ان اغير موقع الفافة او المزلاج او ان اكبر من حجم الفورم .... فكيف يمكن ذلك ؟؟

شكراً جزيلاً ... ومتابع مع الاخ محمد ..

تم تعديل بواسطه ahmed arkan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي الكريم أنا استخدم أحدث نسخة من كيوتي كريتور

qt-sdk-win-opensource-2010.01

815092061.jpg

وأما النسخة التي عندك فهي قديمة نوعا ما ولذلك يظهر ترتيب الملفات بهذه الطريقة وهذا غير مهم ولا يسبب مشكلة على الإطلاق

أما بالنسبة لظهور الفورم فارغا فهذا فعلا شيء غريب ولا أعرف السبب

المفروض أنك إذا كنت وضعت أي أدوات على الفورم أن تظهر لك مع ظهور الفورم

وظهور الفورم يكون بالضغط على الملف ذو الامتداد ui وهو عندك كما في الصورة mainwindow.ui

فجرب أن تنشئ مشروعا جديد وتضيف الأدوات وتفتح الفورم

وأنصحك أن تقوم بتحميل أحدث نسخة من الكريتور لأن بها تحديثات ومعالجة لبعض الأخطاء التي كانت موجودة في الإصدارات السابقة

وفقك الله

تم تعديل بواسطه محمـد عواد
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عفواً اقصد لاتظهر لي الادوات عند بناء وتشغيل البرنامج اخي الكريم ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عفواً اقصد لاتظهر لي الادوات عند بناء وتشغيل البرنامج اخي الكريم ..

هل جربت أن تفتح الفورم بواسطة Qt Designer وليس بـ Qt Creator

وإذا استطعت أن ترفع لي الفورم لعل أن يكون فيه خطأ

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الحمد لله اشتغل الفورم وظهرت فيه الادوات ... وقمت بتطبيق شرحك ... وقمت بعمل ربط بين مزلاج وشريط تحميل ... الان فهمت هذه الفكرة .... هل بالامكان اكمال شرحك بطريقة كتابة الاكواد ..

286311774.jpg

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بالنسبة للطريقة الثانية هي استخدام زر تحرير في وضع signals & slots وهو في أعلى الشاشة وعند الضغط عليه تصبح الأدوات قابلة لتحرير أشاراتها ومستقبلاتها بواسطة السحب والإفلات

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

http://www.arabteam2000-forum.com/index.php?showtopic=190285

والطريقة الثالثة للاستفادة من الديزاينر هو أن تقف على الأداة المطلوب إنشاء الحدث لها بيمين الفأرة ثم تختار go to slot فتفتح لك نافذ تختار منها لإشارة المطلوب عملها فسوف يقوم البرنامج بإنشاء جسم الحدث وعليك بكتابة الكود داخل جسم الحدث كما سيظهر لك

مثال عند الضغط على pushButton بيمين الفأرة واختيار go to slot ثم اختيار clicked

يظهر لك الكود التالي جاهزا لتقوم بكتابة المستقبل للإشارة وما سيحصل لهذا المستقبل عند استقبله للإشارة

 void MainWindow::on_pushButton_clicked()
{

}

فيصبح مثلا الكود هكذا

 

void MainWindow::on_pushButton_clicked()
{


QMessageBox messageBox;

messageBox.setText("مرحبا");

messageBox.exec();


}

تم تعديل بواسطه محمـد عواد
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخ الكريم محمد عواد ... الله يجازيك بالخير ويوفقك ....

فقط بالنسبة لـ

void MainWindow::on_pushButton_clicked() 
{


QMessageBox messageBox;

messageBox.setText("مرحبا");

messageBox.exec();


}

يظهر لي خطأ عند التنفيذ ! .... حيث قمت بالضغط على pushButton بيمين الفأرة واختيار go to slot ثم اختيار clicked ثم وضعت الكود .

990482635.jpg

شكراً جزيلاً

تم تعديل بواسطه ahmed arkan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ينبغي عليك تضمين الفئة التالية = وهي الفئة المتحكمة في ظهور رسائل التنبيه =



#include <QMessageBox>

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تم اضافة الفئة ونجح عمل البرنامج .... شكراً جزيلاً

بالنسبة لطباعة الرسالة باللغة العربية ... الترميز لدي في كيو تي هو utf8 لكن بصراحة لا اعرف أي اضيف السطر البرمجي الخاص بتغيير الترميز لدعم اللغة العربية !

اتعبتك معي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

قمت باضافة هذا السطر لكن بلا جدوى لتعديل الترميز الى اللغة العربية

dijlh2d59c3e5ee.jpg

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكراً SudaNix وبالفعل قمت بمراجعة موضوعي ... ولكن سطر تغيير الترميز تم وضعه في الملف main.cpp وكان كود ادراج الزر في نفس الملف ....

اما الان فكود الزر تم وضعه في الملف widget.cpp ... فاين اضع كود تغيير الترميز لدعم اللغة العربية ؟؟

شكراً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

في نفس الملف main.cpp.

حيث ان التغيير يشمل كل السلاسل strings في البرنامج.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .