void QuickLaunchButton::mouseMoveEvent(QMouseEvent *e) { if (!(e->buttons() & Qt::LeftButton)) { return; } if ((e->pos() - mDragStart).manhattanLength() < QApplication::startDragDistance()) { return; } if (e->modifiers() != Qt::ControlModifier) { return; } QDrag *drag = new QDrag(this); ButtonMimeData *mimeData = new ButtonMimeData(); mimeData->setButton(this); drag->setMimeData(mimeData); drag->exec(Qt::MoveAction); // Icon was droped outside the panel, remove button if (!drag->target()) { selfRemove(); } }
QuickLaunchButton::QuickLaunchButton(QuickLaunchAction * act, ILXQtPanelPlugin * plugin, QWidget * parent) : QToolButton(parent), mAct(act), mPlugin(plugin) { setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); setAcceptDrops(true); setAutoRaise(true); setDefaultAction(mAct); mAct->setParent(this); mMoveLeftAct = new QAction(XdgIcon::fromTheme("go-previous"), tr("Move left"), this); connect(mMoveLeftAct, SIGNAL(triggered()), this, SIGNAL(movedLeft())); mMoveRightAct = new QAction(XdgIcon::fromTheme("go-next"), tr("Move right"), this); connect(mMoveRightAct, SIGNAL(triggered()), this, SIGNAL(movedRight())); mDeleteAct = new QAction(XdgIcon::fromTheme("dialog-close"), tr("Remove from quicklaunch"), this); connect(mDeleteAct, SIGNAL(triggered()), this, SLOT(selfRemove())); addAction(mDeleteAct); mMenu = new QMenu(this); mMenu->addAction(mAct); mMenu->addSeparator(); mMenu->addAction(mMoveLeftAct); mMenu->addAction(mMoveRightAct); mMenu->addSeparator(); mMenu->addAction(mDeleteAct); setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(this_customContextMenuRequested(const QPoint&))); }
void DiveHandler::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { QMenu m; GasSelectionModel *model = GasSelectionModel::instance(); model->repopulate(); int rowCount = model->rowCount(); for (int i = 0; i < rowCount; i++) { QAction *action = new QAction(&m); action->setText(model->data(model->index(i, 0), Qt::DisplayRole).toString()); connect(action, SIGNAL(triggered(bool)), this, SLOT(changeGas())); m.addAction(action); } // don't allow removing the last point if (plannerModel->rowCount() > 1) { m.addSeparator(); m.addAction(QObject::tr("Remove this point"), this, SLOT(selfRemove())); m.exec(event->screenPos()); } }