السلام عليكم
قمت بربط signal لزر مع slot لكن المشكل هو أنه عندما أضغط على هذا الزر يشتغل slot أكثر من مرة ففي البداية يشتغل مرتين و عندما أضغط مرة أخرى يشتغل 3 مرات و هكذا.
فما سبب هذا وما ا لحل.
و شكرا.
السلام عليكم
قمت بربط signal لزر مع slot لكن المشكل هو أنه عندما أضغط على هذا الزر يشتغل slot أكثر من مرة ففي البداية يشتغل مرتين و عندما أضغط مرة أخرى يشتغل 3 مرات و هكذا.
فما سبب هذا وما ا لحل.
و شكرا.
اقله اخي ضع الكود -- لكي يفيدك من لديه معلومات
اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ
شكرا أخي
المشروع يهدف إلى دراسة الحدوديات .
المشروع فيه كثير من class و UI لذلك سأحاول رفعه في أحد المواقع
أرجو أن تنتظرني
الرابط هو
هناك بعض الملفات المفقودة :
WARNING: Failure to find: courbe.cpp
WARNING: Failure to find: courbe.h
نرجو أرفاق الجزء المتعلق بالمشكلة.
khalidmaroc1988 كتب:السلام عليكم
قمت بربط signal لزر مع slot لكن المشكل هو أنه عندما أضغط على هذا الزر يشتغل slot أكثر من مرة ففي البداية يشتغل مرتين و عندما أضغط مرة أخرى يشتغل 3 مرات و هكذا.
فما سبب هذا وما ا لحل.
و شكرا.
أخي الكريم ... الظاهر من مشكلتك أنك تحاول ربط الslot مع الsignal كل مرة يتم إستدعاء slot ... لذلك تتضاعف عدد مرات الاستدعاء ....
قم بمراجعة الدالة connect وحاول حذف المتكرر منها ...
أخي SudaNix يمكنك محو كل ما يتعلق ب courbe و سيعمل لكن المشكلة تظهر عندما نضغط على زر somme و نقوم بالعملية ونضغط على زرaccueil ثم نضغط على زر somme مرة أخرى.
و شكرا جزيلا .
شكرا أخي b.m.s لكن لم أفهمك كثيرا فأنا مبتدأ في Qt
إذا كان بالإمكان مثال بسيط مشابه لما قلت جزاك الله خيرا.
السلام عليكم ورحمة الله
أخي المكرم, إذا كنت مبتديء في هذه التقنية فتفضل بالمرور عبر الرابط التالي:
مرجع عربي لآلية Signal And Slot
هنا في نفس القسم...
ربما تجد إجابة بين السطور...
موفق يارب
[وسط]
♥ Countess ♥

♥
[/وسط]
يصعب معرفة المشكلة هنا ، الشفرة متداخلة وهيكل البرنامج غير واضح وهناك استخدامات ل 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
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);
شكرا أختي رغد على المساعدة جاري الأن الدخول على الرابط المشار إليه.
Modal Dialog and Modeless Dialog شكرا أخي SudaNix على المساعدة و على الفكرة الممتازة وسأحاول تنفيذها والإستفادة من الروابط المشارة وهي فرصة جيدة لتعلم