예제 #1
0
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);
                    }
                }
            }
        }
    }
}