Spec-Zone.ru › Qt 5.14

Класс QMimeData

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

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

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

QMimeData()
виртуальный ~QMimeData()
void очистить()
QVariant colorData() const
QByteArray data(const QString &mimeType) const
виртуальный QStringList форматы() const
bool имеетЦвет() const
виртуальный 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 текст() const
QList<QUrl> ссылки() const

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

виртуальный 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
имеетТекст() текст() установитьТекст() text/plain
имеетHtml() html() установитьHtml() text/html
имеетСсылки() ссылки() установитьСсылки() text/uri-list
имеетИзображение() imageData() установитьИзображениеДанные() 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(). Например:
    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.14/qmimedata.html

Spec-Zone.ru

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