سؤال

لا أعرف حقا كيفية صياغة سؤالي هذه المرة...

لدي طلبي مع كديالوج كنافذة رئيسية.التطبيق هو الحصول على قيم مختلفة مثل درجة الحرارة والرطوبة وهلم جرا من جهاز بعيد.

للتنمية أضفت مربع مجموعة مع الحاجيات المختلفة لمحاكاة هذه القيم.لدي حدود مختلفة لرمي التحذيرات والإنذارات للمستخدم.

على سبيل المثال إذا ارتفعت درجة الحرارة أكثر من 30 C ج ثم فتح كمساجيبوكس مع وقت الطلب (التطبيق لا الاقتراع في الجهاز البعيد) ودرجة الحرارة الحالية.لذلك يتم تحديث هذا كل دورة طلب.

أستخدم طريقة العرض () لإظهار مربع الرسالة الذي يحافظ على تشغيل تطبيقي في الخلفية.المشكلة الآن هي:ينصب التركيز على مربع الرسالة ولا يمكن النقر فوق أي شيء في نافذتي الرئيسية/ كيوالوج حتى لا يتم قبول/ انتهاء مربع الرسالة.

وهذه مشكلتي:في وضع المحاكاة أريد أن ألعب مع قيم درجات الحرارة المختلفة التي يمكنني ضبطها بواسطة شريط التمرير في النافذة الرئيسية.كيف يمكنني الوصول إلى هذه الحاجيات / جعل مربع الرسالة بطريقة أو بأخرى "عدم حظر"?

مع أطيب التحيات,

ماتياس

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

المحلول

ما تواجهه يسمى "طريقة" النافذة.بشكل افتراضي ، أ QMessageBox هو "تطبيق مشروط".هذا يعني أن الإدخال إلى جميع نوافذ التطبيقات الأخرى محظور.

لتغيير الطريقة ، استخدم سيتويندوموداليتي() مع قيمة من كيو تي:: ويندومودياليتي فقط قبل الاتصال show().في قضيتك:

box->setWindowModality(Qt::NonModal);
box->show();

نصائح أخرى

في الواقع ، لديك مربع رسالة شكلي وهي الطريقة التي يُقصد بها عمل QMessageBox - أي يتم تنبيه المستخدم وحماية واجهة المستخدم من المزيد من التفاعل حتى يسجل المستخدم الرسالة ، ويغلق مربع الرسالة و (إذا ضروري) اتخاذ أي إجراء مطلوب ردًا على الرسالة.

الآن إذا قمت بتعيين طريقة مربع الرسالة على Qt :: NonModal ، (تذكر أن تقوم بتعيينها إلى متغير لن يخرج عن النطاق عندما يستمر تطبيقك بعد ظهور صندوق الرسائل) فستتمكن من التفاعل مع واجهة المستخدم حتى أثناء عرض مربع الرسالة. ، والذي يجب أن أقول إنه "غير عادي". إذا فهمت متطلباتك ، فسيكون لديك بالفعل مربع الرسائل - ثم بينما لا يزال هذا قيد التشغيل ، سترغب بعد ذلك في اللعب بقيم مؤقتة مختلفة في النافذة الرئيسية - إلى أي تأثير؟ حتى يتم إنتاج مربع حوار رسالة آخر؟ سيتعين التخلص من مربع الرسالة في وقت ما.

ليس هذا فقط ، ولكن إذا قمت بإظهار مربع رسالة غير مشروطة ثم تفاعلت مع النافذة الرئيسية ، فمن المحتمل جدًا أن يختفي مربع الرسالة خلف النافذة الرئيسية ، بعيدًا عن الأنظار على أي حال.

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

أتمنى أن يساعدك هذا

تحياتي

روجر

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