Qt QGraphicsScene, как разделить сигналы выбора и отключения? - PullRequest
1 голос
/ 24 мая 2011

Я создаю приложение в qt, и у меня возникла проблема.

У меня есть сцена qgraphics. Я создаю сцену, и я ввел некоторые действия, когда пользователь нажимает на предмет сцены.

Я могу обнаружить сигналы selectionChanged(), но:

  1. Сигнал испускается дважды (один раз для выбранного элемента и один раз для ранее выбранного элемента (отмена выбора), поэтому необходимые действия выполняются дважды для обоих элементов).

  2. При нажатии на элемент он остается выбранным, и я не могу щелкнуть его снова ... (Я попытался установить item->setSelected(false), но он попал в бесконечный цикл выбора / отмены выбора ...).

Кто-нибудь знает, как это исправить?

То, чего я пытаюсь достичь, - это не предпринимать никаких действий по отмене выбора, и чтобы иметь возможность повторно щелкнуть по нажатому элементу и повторно выполнить действие.

1 Ответ

1 голос
/ 24 мая 2011

Определите слот yourSlot() и подключите его к сигналу selectionChanged().В этом слоте вы проверяете, выбран ли элемент, отвечающий за излучение сигнала.

void yourSlot() {
   QGraphicsItem  *item = qobject_cast<QGraphicsItem  *>(sender());

   if (item) {
      if ( item->isSelected() ) { //this item is selected
         doSomethin();

         //*deselect* the item so that it can be selected again
         item->setSelected(false);
      } 
      else { //the signal was fired because the item was deselected
        //ignore()
      }
   }
}

Я не могу попробовать это сейчас, потому что у меня не установлен Qt на этом компьютере, я думаю,должно сработать.

...