Spec-Zone.ru › Qt 5.15

Класс QMimeData

Класс QMimeData предоставляет контейнер для данных, которые записывают информацию о типе MIME. Подробнее...

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

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

QMimeData()
virtual ~QMimeData()
void очистить()
QVariant colorData() const
QByteArray data(const QString &mimeType) const
virtual QStringList форматы() const
bool имеетЦвет() const
virtual bool имеетФормат(const QString &mimeType) const
bool имеетHtml() const
bool имеетИзображение() const
bool имеетТекст() const
bool имеетСсылки() const
QString html() const
QVariant imageData() const
void удалитьФормат(const QString &mimeType)
void установитьЦветДанные(const QVariant &color)
void установитьДанные(const QString &mimeType, const QByteArray &data)
void установитьHtml(const QString &html)
void установитьИзображениеДанные(const QVariant &image)
void установитьТекст(const QString &text)
void установитьСсылки(const QList<QUrl> &urls)
QString text() const
QList<QUrl> urls() const

Защищённые функции

virtual QVariant retrieveData(const QString &mimeType, QVariant::Type type) const

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

QMimeData используется для описания информации, которая может храниться в буфере обмена и передаваться с помощью механизма перетаскивания. Объекты QMimeData связывают хранимые данные с соответствующими типами MIME, чтобы обеспечить безопасную передачу информации между приложениями и копирование внутри одного приложения.

Объекты QMimeData обычно создаются с помощью new и предоставляются объектам QDrag или QClipboard. Это позволяет Qt управлять используемой ими памятью.

Один объект QMimeData может хранить одни и те же данные в нескольких разных форматах одновременно. Функция форматы() возвращает список доступных форматов в порядке предпочтения. Функция data() возвращает исходные данные, связанные с типом MIME, а setData() позволяет установить данные для типа MIME.

Для наиболее распространённых типов MIME QMimeData предоставляет удобные функции для доступа к данным:

Тестировщик Получатель Установитель Типы MIME
hasText() text() setText() text/plain
hasHtml() html() setHtml() text/html
hasUrls() urls() setUrls() text/uri-list
hasImage() imageData() setImageData() image/ *
имеетЦвет() colorData() установитьЦветДанные() application/x-color

Например, если вы пишете виджет, который принимает перетаскивание URL-адресов, у вас получится код такого рода:

void MyWidget::dragEnterEvent(QDragEnterEvent *event)
{
    if (event->mimeData()->hasUrls())
        event->acceptProposedAction();
}

void MyWidget::dropEvent(QDropEvent *event)
{
    if (event->mimeData()->hasUrls()) {
        foreach (QUrl url, event->mimeData()->urls()) {
            ...
        }
    }
}

Существует три подхода для хранения пользовательских данных в объекте QMimeData:

  1. Пользовательские данные могут храниться непосредственно в объекте QMimeData как QByteArray с помощью setData(). Например:
    QByteArray csvData = ...;
    
    QMimeData *mimeData = new QMimeData;
    mimeData->setData("text/csv", csvData);
  2. Мы можем переопределить подкласс QMimeData и переопределить hasFormat(), форматы() и retrieveData().
  3. Если операция перетаскивания происходит внутри одного приложения, мы можем создать подкласс QMimeData и добавить в него дополнительные данные, а затем использовать qobject_cast() в обработчике события drop получателя. Например:
    void MyWidget::dropEvent(QDropEvent *event)
    {
        const MyMimeData *myData =
                qobject_cast<const MyMimeData *>(event->mimeData());
        if (myData) {
            // access myData's data directly (not through QMimeData's API)
        }
    }

Типы MIME, специфичные для платформы

В Windows, форматы() также вернут пользовательские форматы, доступные в данных MIME, используя подтип x-qt-windows-mime для указания того, что они представляют данные в нестандартных форматах. Форматы будут иметь следующий вид:

application/x-qt-windows-mime;value="<custom type>"

Ниже приведены примеры пользовательских типов MIME:

application/x-qt-windows-mime;value="FileGroupDescriptor"
application/x-qt-windows-mime;value="FileContents"

Объявление каждого формата value описывает способ кодирования данных.

В некоторых случаях (например, при перетаскивании нескольких вложений электронной почты) доступны несколько значений данных. К ним можно получить доступ, добавив значение index.

application/x-qt-windows-mime;value="FileContents";index=0
application/x-qt-windows-mime;value="FileContents";index=1

В Windows формат MIME не всегда напрямую отображается в форматы буфера обмена. Qt предоставляет QWinMime для сопоставления форматов буфера обмена с общепринятыми форматами MIME. Аналогично, QMacPasteboardMime сопоставляет MIME с Mac-форматами.

См. также QClipboard, QDragEnterEvent, QDragMoveEvent, QDropEvent, QDrag, QMacPasteboardMime и Перетаскивание.

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

QMimeData::QMimeData()

Создаёт новый объект данных MIME без данных.

[virtual] QMimeData::~QMimeData()

Уничтожает объект данных MIME.

void QMimeData::очистить()

Удаляет все записи типов и данных MIME в объекте.

QVariant QMimeData::colorData() const

Возвращает цвет, если данные в объекте представляют цвет (тип MIME application/x-color); в противном случае возвращает пустой вариант.

Используется QVariant, потому что QMimeData принадлежит модулю Qt Core, а QColor — модулю Qt GUI. Для преобразования QVariant в QColor просто используйте qvariant_cast(). Например:

if (event->mimeData()->hasColor()) {
    QColor color = qvariant_cast<QColor>(event->mimeData()->colorData());
    ...
}

См. также имеетЦвет(), установитьЦветДанные() и data().

QByteArray QMimeData::data(const QString &mimeType) const

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

См. также установитьДанные().

[virtual] QStringList QMimeData::formats() const

Возвращает список поддерживаемых объектом форматов. Это список типов MIME, для которых объект может вернуть подходящие данные. Форматы в списке упорядочены по приоритету.

Для самых распространённых типов данных вы можете вызвать функции более высокого уровня hasText(), hasHtml(), hasUrls(), hasImage() и hasColor() вместо этого.

См. также hasFormat(), setData() и data().

bool QMimeData::hasColor() const

Возвращает true, если объект может вернуть цвет (тип MIME application/x-color); в противном случае возвращает false.

См. также setColorData(), colorData() и hasFormat().

[virtual] bool QMimeData::hasFormat(const QString &mimeType) const

Возвращает true, если объект может вернуть данные для указанного типа MIME mimeType; в противном случае возвращает false.

Для самых распространённых типов данных вы можете вызвать функции более высокого уровня hasText(), hasHtml(), hasUrls(), hasImage() и hasColor() вместо этого.

См. также formats(), setData() и data().

bool QMimeData::hasHtml() const

Возвращает true, если объект может вернуть HTML (тип MIME text/html); в противном случае возвращает false.

См. также setHtml(), html() и hasFormat().

bool QMimeData::hasImage() const

Возвращает true, если объект может вернуть изображение; в противном случае возвращает false.

См. также setImageData(), imageData() и hasFormat().

bool QMimeData::hasText() const

Возвращает true, если объект может вернуть обычный текст (тип MIME text/plain); в противном случае возвращает false.

См. также setText(), text(), hasHtml() и hasFormat().

bool QMimeData::hasUrls() const

Возвращает true, если объект может вернуть список URL-адресов; в противном случае возвращает false.

URL соответствуют типу MIME text/uri-list.

См. также setUrls(), urls() и hasFormat().

QString QMimeData::html() const

Возвращает строку, если данные, хранящиеся в объекте, являются HTML (тип MIME text/html); в противном случае возвращает пустую строку.

См. также setHtml(), hasHtml() и setData().

QVariant QMimeData::imageData() const

Возвращает QVariant, хранящий QImage, если объект может вернуть изображение; в противном случае возвращает нулевую переменную.

Используется QVariant, потому что QMimeData принадлежит модулю Qt Core, а QImage — модулю Qt GUI. Для преобразования QVariant в QImage просто используйте qvariant_cast(). Например:

if (event->mimeData()->hasImage()) {
    QImage image = qvariant_cast<QImage>(event->mimeData()->imageData());
    ...
}

См. также setImageData() и hasImage().

void QMimeData::removeFormat(const QString &mimeType)

Удаляет запись данных для mimeType в объекте.

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

[virtual protected] QVariant QMimeData::retrieveData(const QString &mimeType, QVariant::Type type) const

Возвращает переменную с заданным типом type, содержащую данные для типа MIME, указанного mimeType. Если объект не поддерживает заданный тип MIME или тип переменной, вместо этого возвращается нулевая переменная.

Эта функция вызывается общим методом data() и удобными методами-получателями (text(), html(), urls(), imageData() и colorData()). Вы можете переопределить её, если хотите хранить свои данные с помощью пользовательской структуры данных (вместо QByteArray, что предоставляет setData()). В таком случае вам также необходимо переопределить hasFormat() и formats().

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

void QMimeData::setColorData(const QVariant &color)

Устанавливает данные цвета в объекте на заданный цвет color.

Цвета соответствуют типу MIME application/x-color.

См. также colorData(), hasColor() и setData().

void QMimeData::setData(const QString &mimeType, const QByteArray &data)

Устанавливает данные, связанные с типом MIME, заданным mimeType, на указанные data.

Для самых распространённых типов данных вы можете вызвать функции более высокого уровня setText(), setHtml(), setUrls(), setImageData() и setColorData() вместо этого.

Обратите внимание, что если вы хотите использовать пользовательский тип данных в операции перетаскивания элемента в представлении элементов, необходимо зарегистрировать его как Qt метатип, используя макрос Q_DECLARE_METATYPE(), и реализовать операторы потоков для него. Затем операторы потоков необходимо зарегистрировать с помощью функции qRegisterMetaTypeStreamOperators().

См. также data(), hasFormat(), QMetaType и qRegisterMetaTypeStreamOperators().

void QMimeData::setHtml(const QString &html)

Устанавливает html в качестве HTML (тип MIME text/html) для представления данных.

См. также html(), hasHtml(), setText() и setData().

void QMimeData::setImageData(const QVariant &image)

Устанавливает данные в объекте на заданный image.

Используется QVariant, потому что QMimeData принадлежит модулю Qt Core, а QImage — модулю Qt GUI. Преобразование из QImage в QVariant неявное. Например:

mimeData->setImageData(QImage("beautifulfjord.png"));

См. также imageData(), hasImage() и setData().

void QMimeData::setText(const QString &text)

Устанавливает text как обычный текст (тип MIME text/plain) для представления данных.

См. также text(), hasText(), setHtml() и setData().

void QMimeData::setUrls(const QList<QUrl> &urls)

Устанавливает URL-адреса, хранящиеся в объекте MIME данных, на указанные urls.

URL соответствуют типу MIME text/uri-list.

Начиная с Qt 5.0, setUrls также экспортирует URL-адреса как обычный текст, если setText не был вызван ранее, чтобы можно было переместить их в любое поле ввода и текстовый редактор.

См. также urls(), hasUrls() и setData().

QString QMimeData::text() const

Возвращает представление данных в формате обычного текста (тип MIME text/plain).

См. также setText(), hasText(), html() и data().

QList<QUrl> QMimeData::urls() const

Возвращает список URL-адресов, содержащихся в объекте MIME данных.

URL соответствуют типу MIME text/uri-list.

См. также setUrls(), hasUrls() и data().

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

Spec-Zone.ru

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