Exemplo n.º 1
0
Qt::DropAction QDrag::exec(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction)
{
    Q_D(QDrag);
    if (!d->data) {
        qWarning("QDrag: No mimedata set before starting the drag");
        return d->executed_action;
    }
    QDragManager *manager = QDragManager::self();
    d->defaultDropAction = Qt::IgnoreAction;
    d->possible_actions = supportedActions;

    if (manager) {
        if (defaultDropAction == Qt::IgnoreAction) {
            if (supportedActions & Qt::MoveAction) {
                d->defaultDropAction = Qt::MoveAction;
            } else if (supportedActions & Qt::CopyAction) {
                d->defaultDropAction = Qt::CopyAction;
            } else if (supportedActions & Qt::LinkAction) {
                d->defaultDropAction = Qt::LinkAction;
            }
        } else {
            d->defaultDropAction = defaultDropAction;
        }
        d->executed_action = manager->drag(this);
    }

    return d->executed_action;
}
Exemplo n.º 2
0
/*!
    \obsolete

    \bold{Note:} It is recommended to use exec() instead of this function.

    Starts the drag and drop operation and returns a value indicating the requested
    drop action when it is completed. The drop actions that the user can choose
    from are specified in \a request. Qt::CopyAction is always allowed.

    \bold{Note:} Although the drag and drop operation can take some time, this function
    does not block the event loop. Other events are still delivered to the application
    while the operation is performed.

    \sa exec()
*/
Qt::DropAction QDrag::start(Qt::DropActions request)
{
    Q_D(QDrag);
    if (!d->data) {
        qWarning("QDrag: No mimedata set before starting the drag");
        return d->executed_action;
    }
    QDragManager *manager = QDragManager::self();
    d->defaultDropAction = Qt::IgnoreAction;
    d->possible_actions = request | Qt::CopyAction;
    if (manager)
        d->executed_action = manager->drag(this);
    return d->executed_action;
}