2014-10-06 3 views

ответ

2

Это контролируется флажками предметов. Чтобы отключить возможность выбора для конкретного пункта, сделать

item->setFlag(QGraphicsItem::ItemIsSelectable, false); 

Если вы хотите, чтобы укомплектовать отключить элементы Выбор для QGraphicsScene независимо от флагов пункт я бы рекомендовал подключить QGraphicsScene::selectionChanged к QGraphicsScene::clearSelection.

Если вы хотите отключить множественный выбор, я предлагаю следующее:

  • Подкласс QGraphicsScene и держать указатель lastSelection к QGraphicsItem вокруг
  • Создать слот, подключенный к QGraphicsScene::selectionChanged
  • Check selectedItems:
    • пусто: ничего не делать (= ничего не выбрано)
    • cont AINS только lastSelection: ничего не делать (= выбор не реально изменить)
    • содержит один элемент, а не lastSelection: установить lastSelection к этому элементу (= один элемент, выбранный в первый раз)
    • содержит два элемента: нужно be lastSelection. Удалите это из выделения (lastSelection->setSelected(false);), установите lastSelection в оставшийся пункт. (= Другой элемент был выбран, переместить выделение к нему)

Вам может понадобиться блокировать сигналы во время изменения выбора внутри паза.

+0

Привет, но я все еще хочу, чтобы сохранить нормальную способность выбора, я только хочу, чтобы отключить множественный выбор ... – Nyaruko

+0

увидеть мой отредактированный ответ , – dom0

+0

Спасибо за ваш ответ. – Nyaruko

1

Простой способ отключить множественный выбор:

  1. Создайте свой собственный класс Dirived от QGraphicsItem.
  2. перегрузки защищаемого mousePressEvent функции и отключить ControlModifier:

    protected: 
        void YourOwnQGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) Q_DECL_OVERRIDE 
        { 
         if(mouseEvent->modifiers() & Qt::ControlModifier) 
         { 
          mouseEvent->ignore(); 
         } 
         else 
         { 
          QGraphicsItem::mousePressEvent(mouseEvent); 
          //Do what you want... 
         } 
        } 
    
Смежные вопросы