Home · All Classes · Main Classes · Grouped Classes · Modules · Functions

Описание Класса QDrag
[модуль QtGui]

Класс 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.


Описание Функций-Членов

QDrag::QDrag ( QWidget * dragSource )

Создает новый объект перетаскивания для виджета, переданного в dragSource.

QDrag::~QDrag ()

Разрушает объект перетаскивания.

void QDrag::actionChanged ( Qt::DropAction action )   [signal]

Данный сигнал испускается, когда действие action, ассоциированное с перетаскиванием изменяется.

См. также targetChanged().

QPoint QDrag::hotSpot () const

Возвращает позицию горячей точки относительно левого-верхнего угла указателя мыши.

См. также setHotSpot().

QMimeData * QDrag::mimeData () const

Возвращает MIME-данные, заключенные в объекте перетаскивания.

См. также setMimeData().

QPixmap QDrag::pixmap () const

Возвращает пиксельную карту, используемую для представления информации в процессе операции drag and drop.

См. также setPixmap().

void QDrag::setDragCursor ( const QPixmap & cursor, Qt::DropAction action )

Устанавливает курсор перетаскивания Cursor для действия Action. Курсоры по умолчанию отвергаются. Возвратиться к использованию родного курсора для действия action можно передав нулевой указатель на QPixmap в качестве cursor.

Действие action может быть равным только copyAction, moveAction Или Linkaction. Все другие действия игнорируются.

void QDrag::setHotSpot ( const QPoint & hotSpot )

Устанавливает позицию горячей точки относителько левого-верхнего угла пиксельной карты в значение указателя hotSpot.

См. также hotSpot().

void QDrag::setMimeData ( QMimeData * data )

Устанавливает в качестве данных, которые должны быть переданы, MIME-данные data. Объект QDrag становится владельцем данных.

См. также mimeData().

void QDrag::setPixmap ( const QPixmap & pixmap )

Устанавливает пиксельную карту pixmap в качестве пиксельной карты, используемой для отображения информации в процессе операции Drag And Drop.

См. также pixmap().

QWidget * QDrag::source () const

Возвращает источник операции Drag And Drop, т.е. виджет, в котором операция Drag And Drop была организована.

Qt::DropAction QDrag::start ( Qt::DropActions request = Qt::CopyAction )

Начинает операцию Drag And Drop. Действия, доступные пользователю по окончании операции Drag And Drop, перадаются в request. Qt::CopyAction доступно всегда.

QWidget * QDrag::target () const

Возвращает объект-приемник операции Drag And Drop, т.е. виджет, в который будет перемещен перетаскиваемый объект.

void QDrag::targetChanged ( QWidget * newTarget )   [signal]

Данный сигнал испускается при изменении объекта-приемника операции Drag And Drop, с новым объектом-приемником, переданным в newTarget.

См. также target() и actionChanged().


Copyright © 2005 Trolltech Trademarks
Qt 4.1.0
Hosted by uCoz