Spec-Zone.ru › Qt 6.0

Класс QDrag

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

Заголовок: #include <QDrag>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Наследует: QObject
  • Список всех членов, включая наследуемые

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

QDrag(QObject *dragSource)
virtual ~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

Сигналы

void actionChanged(Qt::DropAction action)
void targetChanged(QObject *newTarget)

Статические открытые члены

void cancel()

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

Перетаскивание — интуитивный способ копирования или перемещения данных в приложении и используется во многих настольных средах в качестве механизма копирования данных между приложениями. Поддержка перетаскивания в 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 после завершения операции перетаскивания.

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

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

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

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

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

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

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

QDrag::QDrag(QObject *dragSource)

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

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

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

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

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

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

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

[virtual] QDrag::~QDrag()

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

[static, since 5.7] void QDrag::cancel()

Отменяет операцию перетаскивания, инициированную Qt.

Примечание: В настоящее время реализовано в Windows и X11.

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

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

Qt::DropAction QDrag::defaultAction() const

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

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

[since 5.0] 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 блокируется во время операции.

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

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

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

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

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

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.

Примечание: установка курсора перетаскивания для IgnoreAction может не работать на всех платформах. Тестировалось на X11 и macOS. Windows не поддерживает эту функцию.

См. также 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

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

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

Spec-Zone.ru

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