crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QDrag и перетаскивание из Q*View в Explorer, Ищу примеры.
Stanislaus
  опции профиля:
сообщение 29.7.2009, 16:29
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 23.4.2008
Пользователь №: 156

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день всем.

Возникла вот необходимость перетаскавать из отображения в Explorer, но с ходу как-то не все стало получаться. Примеров выгуглить не получилось, и документация как-то тускло это освещает. Если у кого-нить есть какие-нить ссылочки по этому вопросу, поделитесь пожалуйста.

Судя по Qt-документации следующее должно работать:
void SBSFilesView::mousePressEvent(QMouseEvent *event)
{
    QTableView::mousePressEvent(event);
    if (event->button() == Qt::LeftButton)
        dragStartPosition = event->pos();
}

void SBSFilesView::mouseMoveEvent(QMouseEvent *event)
{
    if (!(event->buttons() & Qt::LeftButton))
        return;

    if ((event->pos() - dragStartPosition).manhattanLength()
        < QApplication::startDragDistance())
        return;

    QDrag *drag = new QDrag(this);
    QMimeData *mimeData = new QMimeData;

    mimeData->setUrls(QList<QUrl>() << QUrl::fromLocalFile("C:\text.txt"));
    drag->setMimeData(mimeData);

    Qt::DropAction dropAction = drag->exec(Qt::MoveAction);
}


Но, в итоге получаю сообщение об ошибке: Cannot move file: cannot read from the source file or disk.
C:\text.txt 100% существует.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 29.7.2009, 16:41
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Экранируй '\' -> '\\'
    mimeData->setUrls(QList<QUrl>() << QUrl::fromLocalFile("C:\\text.txt"));
    drag->setMimeData(mimeData);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Stanislaus
  опции профиля:
сообщение 29.7.2009, 16:58
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 23.4.2008
Пользователь №: 156

Спасибо сказали: 0 раз(а)




Репутация:   0  


Упс... :blush2: Спасибо большое.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 2.4.2012, 13:22
Сообщение #4





Гости








    


Цитата(Stanislaus @ 29.7.2009, 16:29) *
Добрый день всем.

Возникла вот необходимость перетаскавать из отображения в Explorer, но с ходу как-то не все стало получаться. Примеров выгуглить не получилось, и документация как-то тускло это освещает. Если у кого-нить есть какие-нить ссылочки по этому вопросу, поделитесь пожалуйста.

Судя по Qt-документации следующее должно работать:
void SBSFilesView::mousePressEvent(QMouseEvent *event)
{
    QTableView::mousePressEvent(event);
    if (event->button() == Qt::LeftButton)
        dragStartPosition = event->pos();
}

void SBSFilesView::mouseMoveEvent(QMouseEvent *event)
{
    if (!(event->buttons() & Qt::LeftButton))
        return;

    if ((event->pos() - dragStartPosition).manhattanLength()
        < QApplication::startDragDistance())
        return;

    QDrag *drag = new QDrag(this);
    QMimeData *mimeData = new QMimeData;

    mimeData->setUrls(QList<QUrl>() << QUrl::fromLocalFile("C:\text.txt"));
    drag->setMimeData(mimeData);

    Qt::DropAction dropAction = drag->exec(Qt::MoveAction);
}


Но, в итоге получаю сообщение об ошибке: Cannot move file: cannot read from the source file or disk.
C:\text.txt 100% существует.


c:\\text.txt
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.12.2024, 10:12