سؤال

أنا أستخدم مكتبة QT لإظهار عرض شرائح في الشاشة الثانية عندما لا يستخدم المستخدم الشاشة الثانية. مثال على ذلك هو المستخدم الذي يلعب لعبة في الشاشة الأولى وإظهار عرض الشرائح في الشاشة الثانية.

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

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

المحلول

استغرق الأمر مني أن أجدها ولكني وجدت ذلك: setAttribute(Qt::WA_ShowWithoutActivating);

هذا يفرض النافذة عدم التنشيط. حتى مع Qt::WindowStaysOnTopHint علم

نصائح أخرى

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

thumbnail = new QLabel;
thumbnail->setAttribute(Qt::WA_ShowWithoutActivating);
thumbnail->setParent(0);
thumbnail->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);

كيو تي :: أداة مهمة مهمة لجعلها تعمل. يعني عدم سرقة التركيز.

لا تقبل الحاجيات التركيز بشكل افتراضي ولكن من المفترض أنك لم تقم بإنشاء عنصر واجهة مستخدم عادي؟ أي فرعية كان؟ Qmainwindow أو أي شيء آخر؟

من الممكن أن تقبل الفرعية الفرعية النافذة الافتراضية لقبول التركيز، لذا حاول استدعاء Qwidget بشكل صريح :: SetFocuspolicy مع QT :: NOFOCUS قبل الاتصال Qwidget :: Show ().

أيضا، تأكد من أنك لا تتصل Qwidget :: ActivateWindow () على النافذة أو أي من الحاجيات الخاصة به في أي وقت.

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