void AddJobDialog::dropEvent(QDropEvent *event) { QString droppedFile; QList<QUrl> urls = event->mimeData()->urls(); if(urls.count() > 1) { QDragEnterEvent dragEvent(event->pos(), event->proposedAction(), event->mimeData(), Qt::NoButton, Qt::NoModifier); if(qApp->notify(parent(), &dragEvent)) { qApp->notify(parent(), event); reject(); return; } } while((!urls.isEmpty()) && droppedFile.isEmpty()) { QUrl currentUrl = urls.takeFirst(); QFileInfo file(currentUrl.toLocalFile()); if(file.exists() && file.isFile()) { qDebug("AddJobDialog::dropEvent: %s", file.canonicalFilePath().toUtf8().constData()); droppedFile = file.canonicalFilePath(); } } if(!droppedFile.isEmpty()) { const QString outFileName = generateOutputFileName(droppedFile, currentOutputPath(), currentOutputIndx(), m_preferences->getSaveToSourcePath()); ui->editSource->setText(QDir::toNativeSeparators(droppedFile)); ui->editOutput->setText(QDir::toNativeSeparators(outFileName)); } }
void PlayListWidget::dropEvent(QDropEvent *event){ PlayListWidget *source = qobject_cast<PlayListWidget *>(event->source()); if(source && source == this){ QListWidgetItem *dst = itemAt(event->pos()); // 获取终点的列表项 QListWidgetItem *src = itemAt(startPos); // 起点列表项 emit dragEvent(row(src), row(dst)); // 通知窗口:文本位置改变 insertItem(row(dst)+1, event->mimeData()->text()); // 将拖动的列表项放入终点列表的下方 event->setDropAction(Qt::MoveAction); event->accept(); } }
void ofApp::setup() { mediaTypeMap = ofx::MediaTypeMap::getDefault(); instructions = "Drag file onto the window for more info."; mediaType = ""; // simulate a drag event for platforms that don't yet support drag events ofDragInfo simulatedDrag; simulatedDrag.files.push_back(ofToDataPath("automat.ttf")); dragEvent(simulatedDrag); }
void CTimeBarFrame::OnTreeItemEndDrag(wxTreeEvent& event) { wxTreeItemId draggingItemId = m_pItemTreeCtrl->GetSelection(); wxTreeItemId targetItemId = event.GetItem(); BEATS_ASSERT(draggingItemId.IsOk() && targetItemId.IsOk()); if (draggingItemId != targetItemId && !IsParentOfItem(draggingItemId, targetItemId)) { m_pEndDragData = static_cast<CTimeBarFrameData*>(m_pItemTreeCtrl->GetItemData(event.GetItem())); wxCommandEvent dragEvent(TIMTBAR_DRAGITEMEND_EVENT, GetId()); dragEvent.SetEventObject(this); ProcessWindowEvent(dragEvent); } }
void CTimeBarFrame::OnTreeItemStartDrag(wxTreeEvent& event) { m_pBeginDragData = static_cast<CTimeBarFrameData*>(m_pItemTreeCtrl->GetItemData(event.GetItem())); BEATS_ASSERT(m_pBeginDragData != NULL) if (m_pBeginDragData->GetId() != m_pItemTreeCtrl->GetRootItem()) { m_pItemTreeCtrl->SelectItem(event.GetItem()); if (m_bEnableDrag) { wxCommandEvent dragEvent(TIMTBAR_DRAGITEMBEGIN_EVENT, GetId()); dragEvent.SetEventObject(this); ProcessWindowEvent(dragEvent); event.Allow(); } } }
void OccView::onMouseMove( const int theFlags, const QPoint thePoint ) { // Draw the rubber band. if (theFlags & Qt::LeftButton) { drawRubberBand(myXmin, myYmin, thePoint.x(), thePoint.y()); dragEvent(thePoint.x(), thePoint.y()); } // Ctrl for multi selection. if (theFlags & Qt::ControlModifier) { multiMoveEvent(thePoint.x(), thePoint.y()); } else { moveEvent(thePoint.x(), thePoint.y()); } // Middle button. if (theFlags & Qt::MidButton) { switch (myCurrentMode) { case CurAction3d_DynamicRotation: myView->Rotation(thePoint.x(), thePoint.y()); break; case CurAction3d_DynamicZooming: myView->Zoom(myXmin, myYmin, thePoint.x(), thePoint.y()); break; case CurAction3d_DynamicPanning: myView->Pan(thePoint.x() - myXmax, myYmax - thePoint.y()); myXmax = thePoint.x(); myYmax = thePoint.y(); break; default: break; } } }
void FloatyWnd::dropEvent(QDropEvent *e) { dragEvent(e, true); }
void FloatyWnd::dragEnterEvent(QDragEnterEvent *e) { dragEvent(e, false); }
void SelectionManager::MouseMotion(int x, int y) { // Mouse Dragging if( (m_foundComponent != 0) && (m_foundComponent == m_firstClickedComponent) && (m_bPressed) ) { if(m_lastX == 0 && m_lastY == 0) { m_lastX = x; m_lastY = y; } int draggedX = x - m_lastX; int draggedY = y - m_lastY; MouseEvent dragEvent(m_foundComponent, MOUSE_DRAGGED, draggedX, draggedY, m_buttonPressed); m_foundComponent->ProcessMouseEvent(dragEvent); } else { // HACK - For components to work 'outside' of their boundaries if(m_firstClickedComponent && m_bPressed) { MouseEvent dragEvent(m_firstClickedComponent, MOUSE_DRAGGED_OUTSIDE, x, y, m_buttonPressed); m_firstClickedComponent->ProcessMouseEvent(dragEvent); } } // Mouse motion if(m_foundComponent != 0) { MouseEvent motionEvent(m_foundComponent, MOUSE_MOTION, x, y, 0); m_foundComponent->ProcessMouseEvent(motionEvent); } // Mouse enter and exit if(m_foundComponent != m_hoverOverComponent) { // Exit the current component that is set as hover if(m_hoverOverComponent != 0) { MouseEvent exitEvent(m_hoverOverComponent, MOUSE_EXITED, m_mouseX, m_mouseY, 0); m_hoverOverComponent->ProcessMouseEvent(exitEvent); } // Enter the new component if(m_foundComponent != 0) { MouseEvent enterEvent(m_foundComponent, MOUSE_ENTERED, m_mouseX, m_mouseY, 0); m_foundComponent->ProcessMouseEvent(enterEvent); if(m_foundComponent == m_firstClickedComponent && m_bPressed) { MouseEvent pressedEvent(m_foundComponent, MOUSE_PRESSED, m_mouseX, m_mouseY, 0); m_foundComponent->ProcessMouseEvent(pressedEvent); } } m_hoverOverComponent = m_foundComponent; } else if(m_foundComponent == 0) { // Exit the current component that is set as hover if(m_hoverOverComponent != 0) { MouseEvent exitEvent(m_hoverOverComponent, MOUSE_EXITED, m_mouseX, m_mouseY, 0); m_hoverOverComponent->ProcessMouseEvent(exitEvent); } } m_lastX = x; m_lastY = y; }
void BorderlessToolButton::mouseMoveEvent(QMouseEvent *event) { if(movingActivated && draggingEnabled) { emit(dragEvent(event)); } QToolButton::mouseMoveEvent(event); }