Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: schmidt от Март 24, 2013, 09:12



Название: Замена стандартного drag курсора в QTableView
Отправлено: schmidt от Март 24, 2013, 09:12
Добрый день,

QTableView по умолчанию подразумевает операцию копирования при перетаскивании элементов. Но по логике своего приложения я реализую перемещение содержимого выделенных ячеек. Вызов setDefaultDropAction(Qt::MoveAction) на QTableView не оказывает никакого эффекта (проверял на тестовых пустом проекте с "читсым" QTableView пез переопределения каких-либо методов). Есть ли возможность изменить курсор копирования на собственный во время перетаскивания? Пробовал делать так:

Код:
//---------------------------------------------------------------------------------------
void MatrixView::dragEnterEvent(QDragEnterEvent *evt) {
    qDebug() << "dragEnterEvent() called";

    const QMimeData* mime_data = evt->mimeData();
    if(mime_data->hasFormat(TSV_MIME_TYPE)) {
        qDebug() << "action acceptred";
        evt->acceptProposedAction();
        QApplication::setOverrideCursor(QCursor(Qt::ClosedHandCursor));
    }

    QTableView::dragEnterEvent(evt);
}

На консоль успешно выводится
Цитировать
dragEnterEvent() called
action acceptred

Но курсор перегружаться не хочет :) Может есть еще какие-то способы изменить drag-курсор?


Название: Re: Замена стандартного drag курсора в QTableView
Отправлено: dio от Март 24, 2013, 16:40
DragAction надо задавать в модели, переопределением метода Qt::DropActions QAbstractItemModel::supportedDragActions () const или методом setSupportedDragActions ( Qt::DropActions actions ).


Название: Re: Замена стандартного drag курсора в QTableView
Отправлено: GreatSnake от Март 25, 2013, 10:45
Под Windows динамически менять drag-cursor не получится :(