2016-01-19 4 views
0

У меня есть несколько QGraphicsItems с ItemIsSelectable, ItemIsMovable и ItemSendsGeometryChanges флаги.Отключено QGraphicsItem предотвращает прокрутку QGraphicsView

Иногда я хочу отключить выбор и перемещение этих предметов, и в настоящее время я делаю это, позвонив по телефону QGraphicsItem.setEnabled(False). Однако, когда курсор находится над отключенным QGraphicsItem, колесо прокрутки больше не просматривает вид. Я попытался найти решение через Google, но я не нашел никаких рабочих решений.

Итак, мой вопрос: есть ли простой способ * не * сделать запрещенные элементы предотвращать прокрутку, если курсор находится над ними?

Если нет, то я могу просто написать собственную функцию, которая отключает указанные флаги вместо вызова setEnabled() на QGraphicsItem, но я до сих пор удивляюсь, почему скроллинг не работает, а если я действительно не могу позволить отключенным игнорируйте событие прокрутки.

Одна вещь, которую я уже пробовал, отключает Qt.MiddleButton с вызовом setAcceptedMouseButtons(), но это ничего не меняет.

Моя установка: Windows 7, Python 2.7.3 и PyQt4

+0

Вы могли бы адаптировать ответ на этот вопрос: http://stackoverflow.com/q/34476962/1994235 –

ответ

1

void QGraphicsItem::setEnabled(bool enabled)

Отключенные элементы являются видимыми, но они не получают никаких событий
события мыши отбрасываются

Это объяснение, почему ваши события мыши - колесо прокрутки - не работают.
А почему пытаюсь изменить назначение кнопок мыши не делают разницы - этот пункт просто не интересует :-)

Если вы хотите отключить перемещение и выбор QGraphicsItem, лучший способ на отключенный их QGraphicsItem::ItemIsSelectable и QGraphicsItem::ItemIsMovable флаги.

Это действительно кажется более простым ... Как вы, наверное, уже заметили.

Альтернатива - как показывает связанный ответ - это установка фильтра событий сцены, если другие элементы фильтруют события с отключенными элементами. Следующий вопрос имеет хорошую информацию:

Event filter on QGraphicsItem

+0

Да, эти флаги снятия с охраны, что я решил сделайте в конце. – user2746752

Смежные вопросы