Home · All Classes · Main Classes · Grouped Classes · Modules · Functions |
Класс QDrag предоставляет поддержку для основанного на MIME перемещения данных drag and drop. Далее...
#include <QDrag>
Наследует QObject.
Класс QDrag предоставляет поддержку для основанного на MIME перемещения данных drag and drop.
Drag and drop является интуитивнопонятным способом копирования и перемещения пользователем данных внутри приложения и используется во многих графических оболочках для копирования данных между приложениями. Поддержка Drag and drop в Qt сосредомочена вокруг класса QDrag, обрабатывающего большинство деталей операции drag and drop.
Данные, которые будут перемещены с помощью операции drag and drop, помещаются в объект QMimeData. Это делается с помощью функции setMimeData() следующим способом:
QDrag *drag = new QDrag(this); QMimeData *mimeData = new QMimeData; mimeData->setText(commentEdit->toPlainText()); drag->setMimeData(mimeData);
Обратите внимание, что setMimeData() передает объект QMimeData в собственность объекту QDrag. QDrag должен быть создан в куче и иметь QObject в качестве родителя чтобы гарантировать его уничтожение после того, как операция drag and drop будет завершена.
Для представления данных в процессе перемещения указателя мыши в точку назначения, может использоваться пиксельная карта, которая перемещается вместе с указателем мыши. Обычно эта пиксельная карта отображает тип MIME перемещаемых данных, но с помощью setPixmap() может быть установлена любая пиксельная карта. Нужно заботиться о том, чтобы пиксельная карта была не слишком большой. С помощью функции setHotSpot(), в качестве рабочей точки указателя мыши можно задать точку относительно левого-верхнего угла пиксельной карты. В следующем примере позиция рабочей точки курсора устанавливается в середину нижнего края пиксельной карты:
drag->setHotSpot(QPoint(drag->pixmap().width()/2, drag->pixmap().height()));
Виджет-источник и виджет-приемник могут быть получены с помощью source() и target(). Эти функции часто используются для определения, происходит ли операция drag and drop в пределах одного виджета, для реализации различных действий в этих случаях.
QDrag имеет дело непосредственно только с операцией drag and drop. Дело разработчика - решать, когда начинается операция перетаскивания, и как объект QDrag должен создаваться и использоваться. Для конкретного виджета часто требуется повторно реализовать mousePressEvent(), для определения, нажал ли пользователь кнопку мыши, и mouseMoveEvent(), для решения, требуется ли QDrag.
См. также Drag and Drop, QClipboard и QMimeData.
Создает новый объект перетаскивания для виджета, переданного в dragSource.
Разрушает объект перетаскивания.
Данный сигнал испускается, когда действие action, ассоциированное с перетаскиванием изменяется.
См. также targetChanged().
Возвращает позицию горячей точки относительно левого-верхнего угла указателя мыши.
См. также setHotSpot().
Возвращает MIME-данные, заключенные в объекте перетаскивания.
См. также setMimeData().
Возвращает пиксельную карту, используемую для представления информации в процессе операции drag and drop.
См. также setPixmap().
Устанавливает курсор перетаскивания Cursor для действия Action. Курсоры по умолчанию отвергаются. Возвратиться к использованию родного курсора для действия action можно передав нулевой указатель на QPixmap в качестве cursor.
Действие action может быть равным только copyAction, moveAction Или Linkaction. Все другие действия игнорируются.
Устанавливает позицию горячей точки относителько левого-верхнего угла пиксельной карты в значение указателя hotSpot.
См. также hotSpot().
Устанавливает в качестве данных, которые должны быть переданы, MIME-данные data. Объект QDrag становится владельцем данных.
См. также mimeData().
Устанавливает пиксельную карту pixmap в качестве пиксельной карты, используемой для отображения информации в процессе операции Drag And Drop.
См. также pixmap().
Возвращает источник операции Drag And Drop, т.е. виджет, в котором операция Drag And Drop была организована.
Начинает операцию Drag And Drop. Действия, доступные пользователю по окончании операции Drag And Drop, перадаются в request. Qt::CopyAction доступно всегда.
Возвращает объект-приемник операции Drag And Drop, т.е. виджет, в который будет перемещен перетаскиваемый объект.
Данный сигнал испускается при изменении объекта-приемника операции Drag And Drop, с новым объектом-приемником, переданным в newTarget.
См. также target() и actionChanged().
Copyright © 2005 Trolltech | Trademarks | Qt 4.1.0 |