سؤال

أنا أستخدم QSLIDER (v4.6) للإدخال وكذلك لتقديم ملاحظات للمستخدم. للحصول على ردود الفعل ، سأتصل بالطريقة setValue. أحاول العثور على إشارة ستطلق النار إلا إذا قام المستخدم بتعديل القيمة. تطلق الإشارة المتقدمة عند تغيير المستخدم القيمة وكذلك عند استدعاء SetValue. SliderMoved يطلق النار فقط عندما يسحب المستخدم شريط التمرير (وليس عند استخدام لوحة المفاتيح). راجعت مستندات API ولا يمكنني العثور على أي شيء. هل فاتني شيء؟ هذا يبدو شيئًا شائعًا. إذا لم تكن هناك إشارة أخرى ، فكيف تنصح بمحاكاة هذه الوظيفة؟ هل يجب أن أقوم بتعيين علامة قبل استدعاء SetValue ، وفصل الإشارة وإعادة توصيلها في كل مرة أتصل فيها setValue ...؟

هل كانت مفيدة؟

المحلول

سؤال جيد ، لقد راجعت واجهة برمجة التطبيقات ولم أتمكن أيضًا من العثور على إشارة لن يتم تشغيلها إلا إذا تم تعديل القيمة من قبل المستخدم. قد يكون الحل البديل الذي اقترحته هو الخيار الوحيد ، فقط ضع في اعتبارك أنه لا يتعين عليك فصل / توصيل جميع الإشارات ، فقط استخدم QObject::blockSignals طريقة:

slider->blockSignals(true);
slider->setValue(x);
slider->blockSignals(false);

امل ان يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top