Spec-Zone.ru › Qt 5.6

Класс QDrag

Класс QDrag предоставляет поддержку передачи данных методом перетаскивания и сбрасывания на основе MIME. Подробнее...

Заголовок: #include <QDrag>
qmake: QT += gui
Наследует: QObject
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Открытые функции

QDrag(QObject *dragSource)
~QDrag()
Qt::DropAction defaultAction() const
QPixmap dragCursor(Qt::DropAction action) const
Qt::DropAction exec(Qt::DropActions supportedActions = Qt::MoveAction)
Qt::DropAction exec(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction)
QPoint hotSpot() const
QMimeData * mimeData() const
QPixmap pixmap() const
void setDragCursor(const QPixmap &cursor, Qt::DropAction action)
void setHotSpot(const QPoint &hotspot)
void setMimeData(QMimeData *data)
void setPixmap(const QPixmap &pixmap)
QObject * source() const
Qt::DropActions supportedActions() const
QObject * target() const
  • 31 открытых функций, унаследованных от QObject

Сигналы

void actionChanged(Qt::DropAction action)
void targetChanged(QObject *newTarget)
  • 2 сигнала, унаследованные от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от QObject
  • 11 статические открытые члены, унаследованные от QObject
  • 9 защищённых функций, унаследованных от QObject

Подробное описание

Класс QDrag предоставляет поддержку передачи данных методом перетаскивания и сбрасывания на основе MIME.

Перетаскивание и сбрасывание — интуитивный способ для пользователей копировать или перемещать данные в приложении, и используется во многих настольных средах как механизм для копирования данных между приложениями. Поддержка перетаскивания и сбрасывания в Qt основана на классе QDrag, который обрабатывает большинство деталей операции перетаскивания и сбрасывания.

Данные, которые будут передаваться при операции перетаскивания и сбрасывания, содержатся в объекте QMimeData. Это задается функцией setMimeData() следующим образом:

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

        mimeData->setText(commentEdit->toPlainText());
        drag->setMimeData(mimeData);

Обратите внимание, что функция setMimeData() передает владение объектом QMimeData объекту QDrag. Объект QDrag должен быть создан в куче с родительским объектом QObject, чтобы убедиться, что Qt может очистить ресурсы после завершения операции перетаскивания и сбрасывания.

Иконка (pixmap) может использоваться для представления данных во время перетаскивания, и будет перемещаться вместе с курсором к цели сбрасывания. Эта иконка (pixmap) обычно отображает значок, который представляет тип MIME передаваемых данных, но любая иконка (pixmap) может быть установлена с помощью функции setPixmap(). Положение курсора относительно верхнего левого угла иконки (pixmap) можно задать с помощью функции setHotSpot(). Следующий код позиционирует иконку (pixmap) так, чтобы точка курсора попала в центр нижнего края:

    drag->setHotSpot(QPoint(drag->pixmap().width()/2,
                            drag->pixmap().height()));

Примечание: В X11 иконка (pixmap) может не успевать за перемещениями мыши, если точка курсора приводит к тому, что иконка (pixmap) отображается непосредственно под курсором.

Источник и цель виджетов можно найти с помощью функций source() и target(). Эти функции часто используются для определения того, началась ли операция перетаскивания и завершилась ли она в одном и том же виджете, чтобы можно было реализовать специальное поведение.

Класс QDrag только обрабатывает саму операцию перетаскивания. Разработчик должен определить, когда начинается операция перетаскивания, и как объект QDrag должен быть создан и использован. Для данного виджета часто необходимо переопределить метод mousePressEvent(), чтобы определить, нажал ли пользователь кнопку мыши, и переопределить метод mouseMoveEvent(), чтобы проверить, требуется ли объект QDrag.

См. также Перетаскивание и сброс, QClipboard, QMimeData, QMacPasteboardMime, Пример перетаскиваемых значков, Пример перетаскиваемого текста, Пример места сброса и Пример холодильника с магнитами.

Документация по функциям-членам

QDrag::QDrag(QObject *dragSource)

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

QDrag::~QDrag()

Удаляет объект перетаскивания.

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

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

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

Qt::DropAction QDrag::defaultAction() const

Возвращает предложенное по умолчанию действие сброса для этой операции перетаскивания.

См. также exec() и supportedActions().

QPixmap QDrag::dragCursor(Qt::DropAction action) const

Возвращает курсор перетаскивания для действия action.

Эта функция была добавлена в Qt 5.0.

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

Qt::DropAction QDrag::exec(Qt::DropActions supportedActions = Qt::MoveAction)

Инициализирует операцию перетаскивания и сбрасывания и возвращает значение, указывающее на запрашиваемое действие сброса при завершении. Действия сброса, которые может выбрать пользователь, определяются в supportedActions. Предложенное по умолчанию действие будет выбрано среди разрешённых действий в следующем порядке: Перемещение, Копирование и Связывание.

Примечание: В Linux и macOS операция перетаскивания и сброса может занять некоторое время, но эта функция не блокирует цикл событий. Другие события по-прежнему доставляются в приложение, пока выполняется операция. В Windows цикл событий Qt блокируется во время выполнения операции.

Эта функция была добавлена в Qt 4.3.

Qt::DropAction QDrag::exec(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction)

Инициализирует операцию перетаскивания и сбрасывания и возвращает значение, указывающее на запрашиваемое действие сброса при завершении. Действия сброса, которые может выбрать пользователь, определяются в supportedActions.

defaultDropAction определяет, какое действие будет предложено, когда пользователь выполняет перетаскивание без использования модификаторных клавиш.

Примечание: В Linux и macOS операция перетаскивания может занять некоторое время, но эта функция не блокирует цикл событий. Другие события по-прежнему доставляются в приложение во время выполнения операции. В Windows цикл событий Qt блокируется во время операции. Однако QDrag::exec() в Windows вызывает processEvents() часто, чтобы поддерживать отзывчивость графического интерфейса. Если какие-либо циклы или операции вызываются во время активной операции перетаскивания, это заблокирует операцию перетаскивания.

Эта функция была добавлена в Qt 4.3.

QPoint QDrag::hotSpot() const

Возвращает положение горячей точки относительно верхнего левого угла курсора.

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

QMimeData *QDrag::mimeData() const

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

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

QPixmap QDrag::pixmap() const

Возвращает пиксель, используемый для представления данных в операции перетаскивания и опускания.

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

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

Устанавливает курсор перетаскивания cursor для action. Это позволяет переопределить стандартные системные курсоры. Чтобы вернуться к использованию стандартного курсора для action, передайте пустой QPixmap как cursor.

action может быть только CopyAction, MoveAction или LinkAction. Все другие значения DropAction игнорируются.

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

void QDrag::setHotSpot(const QPoint &hotspot)

Устанавливает положение горячей точки относительно верхнего левого угла пиксельного изображения, указанного точкой hotspot.

Примечание: в X11 пиксельное изображение может не успевать за перемещениями мыши, если горячая точка расположена так, что изображение отображается непосредственно под курсором.

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

void QDrag::setMimeData(QMimeData *data)

Устанавливает данные, которые будут отправлены в указанные MIME data. Владение данными передается объекту QDrag.

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

void QDrag::setPixmap(const QPixmap &pixmap)

Устанавливает pixmap как пиксельное изображение, используемое для представления данных в операции перетаскивания и опускания. Вы можете установить пиксельное изображение только до начала перетаскивания.

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

QObject *QDrag::source() const

Возвращает источник объекта перетаскивания. Это виджет, откуда началась операция перетаскивания и опускания.

Qt::DropActions QDrag::supportedActions() const

Возвращает набор возможных действий опускания для этой операции перетаскивания.

См. также exec() и defaultAction().

QObject *QDrag::target() const

Возвращает целевой объект операции перетаскивания и опускания. Это виджет, куда был перемещен объект перетаскивания.

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

Этот сигнал испускается при изменении целевого объекта операции перетаскивания и опускания, где newTarget — новая цель.

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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qdrag.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API