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

مشكل مع slot

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

السلام عليكم

قمت بربط signal لزر مع slot لكن المشكل هو أنه عندما أضغط على هذا الزر يشتغل slot أكثر من مرة ففي البداية يشتغل مرتين و عندما أضغط مرة أخرى يشتغل 3 مرات و هكذا.

فما سبب هذا وما ا لحل.

و شكرا.

#3

شكرا أخي

المشروع يهدف إلى دراسة الحدوديات .

المشروع فيه كثير من class و UI لذلك سأحاول رفعه في أحد المواقع

أرجو أن تنتظرني

#5

هناك بعض الملفات المفقودة :

WARNING: Failure to find: courbe.cpp

WARNING: Failure to find: courbe.h

نرجو أرفاق الجزء المتعلق بالمشكلة.

#6
khalidmaroc1988 كتب:

السلام عليكم

قمت بربط signal لزر مع slot لكن المشكل هو أنه عندما أضغط على هذا الزر يشتغل slot أكثر من مرة ففي البداية يشتغل مرتين و عندما أضغط مرة أخرى يشتغل 3 مرات و هكذا.

فما سبب هذا وما ا لحل.

و شكرا.

أخي الكريم ... الظاهر من مشكلتك أنك تحاول ربط الslot مع الsignal كل مرة يتم إستدعاء slot ... لذلك تتضاعف عدد مرات الاستدعاء ....

قم بمراجعة الدالة connect وحاول حذف المتكرر منها ...

#7

أخي SudaNix يمكنك محو كل ما يتعلق ب courbe و سيعمل لكن المشكلة تظهر عندما نضغط على زر somme و نقوم بالعملية ونضغط على زرaccueil ثم نضغط على زر somme مرة أخرى.

و شكرا جزيلا .

#8

شكرا أخي b.m.s لكن لم أفهمك كثيرا فأنا مبتدأ في Qt

إذا كان بالإمكان مثال بسيط مشابه لما قلت جزاك الله خيرا.

#9

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

أخي المكرم, إذا كنت مبتديء في هذه التقنية فتفضل بالمرور عبر الرابط التالي:

مرجع عربي لآلية Signal And Slot

هنا في نفس القسم...

ربما تجد إجابة بين السطور...

موفق يارب

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#10

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

لذلك يفضل أن تضع مثالا بسيطا يوضح المشكلة .

ملاحظات:

1- كبديل عن اخفاء النوافذ واظهارها ، استخدم Modal dialog بحيث تحمل النافذة الرئيسية window الأزرار (الجمع،الطرح،القسمة،...الخ) وعند الضغط على أي منهم تظهر لك النافذة المطلوبة ك Modal window

void Window::addPolynomial() {
AddDialog dlg;
dlg.exec();
}

وبالمثل مع كل النوافذ.

هكذا سيكون التصميم أفضل وسيسهل تتبع الأخطاء في البرنامج حيث أنه لو ظهر خطأ في نافذة AddDialog مثلا فان الخطأ سيكون محصورا به وليس لكل البرنامج.

راجع هنا لشرح Modal Dialog and Modeless Dialog

http://qt-ar.org/community/viewtopic.php?f=15&t=148

2- في حالة أردت اخفاء شاشة عند الضغط على زر ما واظهار شاشة اخرى:

ستجد هنا مثلا لذلك تقريبا في الرد 7

/index.php?showtopic=214514

3- استخدام QStackedWidget اذا كنت تريد الذهاب الى شاشة ومن ثم العودة الى الشاشة السابقة (مثل wizard على الرغم من وجود فئة خاصة لل wizard في كيوت).

حيث سيكون البرنامج أكثر تنظيما.

َ

QStackedWidget* stakedWidget = new QStackedWidget(this);

stackedWidget->addWidget(new dialog1);
stackedWidget->addWidget(new dialogs);

stackedWidget->setCurrentIndex(0); // show dialog1


// Now, if you want to show dialog2:
stackedWidget->setCurrentIndex(1);
#11

شكرا أختي رغد على المساعدة جاري الأن الدخول على الرابط المشار إليه.

Modal Dialog and Modeless Dialog شكرا أخي SudaNix على المساعدة و على الفكرة الممتازة وسأحاول تنفيذها والإستفادة من الروابط المشارة وهي فرصة جيدة لتعلم

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