qgraphicsView - كيفية تعطيل التمرير الماوس ولوحة المفاتيح

StackOverflow https://stackoverflow.com/questions/925934

  •  06-09-2019
  •  | 
  •  

سؤال

في طلبي لدي qgraphicsScene مع pixmap المضافة وكلها عرضة في qgraphicsview مع scrollbars قبالة. نافذة البرنامج أصغر ثم pixmap وعندما أضغط على مفاتيح الأسهم أو نقل عجلة الماوس يتم نقل pixmap.

كيف أقوم بتعطيل ذلك حتى لو كان Pixmap أكبر من النافذة لن يتم نقله بواسطة لوحة المفاتيح أو الماوس إلا إذا استخدمت أحداثي لذلك؟

(حاولت تعيين الخاصية التفاعلية إلى false ولكن ذلك لم ينجح)

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

المحلول

أعتقد أن الأسهل الحل سيكون لتعيين focuspolicy من qgraphicsView إلى noFocus ثم معالجة جميع الأحداث الرئيسية في النافذة الرئيسية.

ui->graphicsView->setFocusPolicy( Qt::NoFocus );

نصائح أخرى

أعتقد أن الطريقة السهلة هي استخدام QGraphicsView::setSceneRect() لتعيين المنطقة التي يسمح للرأي بتصورها.

إذا قمت بتعيين المنظر sceneRect() إلى الحجم الفعلي لعرض القطعة (أو أصغر قليلا)، فلن تتمكن من التمرير أو المقلاة خارج هذا المستطيل.

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

ستشمل الطريقة الصعبة تثبيت مرشح الأحداث على القطعة.

في رأيي، سيكون أصعب حل القوة الغاشمة هو اكتشاف التغيير من خلال نوع من الإشارة، وتعيده إلى كيفية ذلك.

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