Класс QMimeData
Класс QMimeData предоставляет контейнер для данных, записывающих информацию о типе MIME. Подробнее...
| Заголовок: | #include <QMimeData> |
| qmake: | QT += core |
| Наследует: | QObject |
Открытые функции
| QMimeData() | |
| virtual | ~QMimeData() |
| void | clear() |
| QVariant | colorData() const |
| QByteArray | data(const QString &mimeType) const |
| virtual QStringList | formats() const |
| bool | hasColor() const |
| virtual bool | hasFormat(const QString &mimeType) const |
| bool | hasHtml() const |
| bool | hasImage() const |
| bool | hasText() const |
| bool | hasUrls() const |
| QString | html() const |
| QVariant | imageData() const |
| void | removeFormat(const QString &mimeType) |
| void | setColorData(const QVariant &color) |
| void | setData(const QString &mimeType, const QByteArray &data) |
| void | setHtml(const QString &html) |
| void | setImageData(const QVariant &image) |
| void | setText(const QString &text) |
| void | setUrls(const QList<QUrl> &urls) |
| QString | text() const |
| QList<QUrl> | urls() const |
- 32 открытых функции унаследованных от QObject
Защищенные функции
| virtual QVariant | retrieveData(const QString &mimeType, QVariant::Type type) const |
- 9 защищенных функций унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство унаследованное от QObject
- 1 открытый слот унаследованный от QObject
- 2 сигналы унаследованные от QObject
- 11 статические открытые члены унаследованные от QObject
Подробное описание
Класс QMimeData предоставляет контейнер для данных, записывающих информацию о типе MIME.
QMimeData используется для описания информации, которая может быть сохранена в буфере обмена (clipboard), и передана через механизм перетаскивания. Объекты QMimeData связывают данные, которые они содержат, с соответствующими типами MIME, чтобы обеспечить безопасную передачу информации между приложениями и копирование внутри одного приложения.
Объекты QMimeData обычно создаются с помощью new и передаются объектам QDrag или QClipboard. Это позволяет Qt управлять используемой ими памятью.
Один объект QMimeData может хранить одни и те же данные в нескольких разных форматах одновременно. Функция formats() возвращает список доступных форматов в порядке предпочтения. Функция 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/ * |
| hasColor() | colorData() | setColorData() | 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:
- Пользовательские данные могут быть сохранены непосредственно в объекте QMimeData как QByteArray с помощью setData(). Например:
QByteArray csvData = ...; QMimeData *mimeData = new QMimeData; mimeData->setData("text/csv", csvData); - Можно создать подкласс QMimeData и переопределить hasFormat(), formats() и retrieveData().
- Если операция перетаскивания происходит внутри одного приложения, можно создать подкласс 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, formats() также вернёт пользовательские форматы, доступные в данных 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::clear()
Удаляет все записи типов 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());
...
} См. также hasColor(), setColorData() и data().
QByteArray QMimeData::data(const QString &mimeType) const
Возвращает данные, хранящиеся в объекте, в формате, описанном MIME-типом, заданным mimeType.
См. также setData().
[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 не был вызван ранее, чтобы можно было переместить их в любой lineedit и текстовый редактор.
См. также 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/archives/qt-5.11/qmimedata.html