void AxisInteractor::showContextMenu(const QPoint &pos) { QPoint globalPos = this->mapToGlobal(pos); QList<QGraphicsItem *> list = this->scene->items(); for (int i = 0; i < list.count(); ++i) { QGraphicsItem *item = list.at(i); if (item->type() == IndicatorItemType) { if (item->isUnderMouse()) { item->setSelected(false); this->createContextMenu(); QAction *selectedItem = this->indicatorContextMenu->exec(globalPos); if (selectedItem) { if (QString("Delete") == selectedItem->text()) { this->scene->removeItem(item); emit this->deleteIndicator(item->toolTip()); } if (QString("Hide") == selectedItem->text()) { bool isVisible = !selectedItem->isChecked(); emit this->showOrHideIndicator(isVisible, item->toolTip()); static_cast<Indicator *>(item)->changeIndicatorColor(isVisible); } } } } } }