QMimeData Class
QMimeData 클래스는 MIME 유형에 대한 정보를 기록하는 데이터 컨테이너를 제공합니다. 더 보기...
| 헤더: | #include <QMimeData> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| 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 |
보호된 함수
| virtual QVariant | retrieveData(const QString &mimeType, QMetaType type) const |
상세 설명
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 객체에 사용자 정의 데이터를 저장하는 방법에는 세 가지가 있습니다:
- setData()를 사용하여 사용자 정의 데이터를 QMimeData 객체에 직접 ` QByteArray `로 저장할 수 있습니다. 예를 들면 다음과 같습니다:
QByteArray csvData = something; 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=1Windows에서는 MIME 형식이 항상 클립보드 형식과 직접 매핑되지는 않습니다. Qt는 클립보드 형식을 개방형 표준 MIME 형식으로 매핑하기 위해 ` QWindowsMimeConverter `를 제공합니다. 마찬가지로, macOS 및 iOS에서는 ` QUtiMimeConverter `가 MIME을 Uniform Type Identifiers(UTI)로 매핑합니다.
QClipboard, QDragEnterEvent, QDragMoveEvent, QDropEvent, QDrag 및 드래그 앤 드롭항목도 참조하십시오 .
멤버 함수 문서
QMimeData::QMimeData()
데이터가 포함되지 않은 새로운 MIME 데이터 객체를 생성합니다.
[virtual noexcept] QMimeData::~QMimeData()
MIME 데이터 객체를 삭제합니다.
void QMimeData::clear()
객체 내의 모든 MIME 유형 및 데이터 항목을 제거합니다.
QVariant QMimeData::colorData() const
객체에 저장된 데이터가 색상(MIME 유형 application/x-color)인 경우 색상을 반환하고, 그렇지 않으면 null 변형을 반환합니다.
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
mimeType 로 지정된 MIME 유형에 설명된 형식으로 객체에 저장된 데이터를 반환합니다. 이 객체에 mimeType MIME 유형( hasFormat() 참조)에 대한 데이터가 포함되어 있지 않은 경우, 이 함수는 해당 형식으로 최대한 변환을 시도할 수 있습니다.
hasFormat() 및 setData()도 참조하십시오 .
[virtual] QStringList QMimeData::formats() const
객체가 지원하는 형식 목록을 반환합니다. 이 목록은 객체가 적절한 데이터를 반환할 수 있는 MIME 유형들로 구성되어 있습니다. 목록에 포함된 형식들은 우선순위 순으로 정렬되어 있습니다.
가장 일반적인 데이터 유형의 경우, 대신 상위 수준 함수인 hasText(), hasHtml(), hasUrls(), hasImage() 및 hasColor()를 호출할 수 있습니다.
hasFormat(), setData(), data()도 참조하십시오 .
bool QMimeData::hasColor() const
객체가 색상(MIME 유형 application/x-color)을 반환할 수 있는 경우 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다.
setColorData(), colorData() 및 hasFormat()도 참조하십시오 .
[virtual] bool QMimeData::hasFormat(const QString &mimeType) const
객체가 mimeType 로 지정된 MIME 유형에 대한 데이터를 반환할 수 있는 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
가장 일반적인 데이터 유형의 경우, 대신 상위 수준 함수인 hasText(), hasHtml(), hasUrls(), hasImage() 및 hasColor()를 호출할 수 있습니다.
formats(), setData() 및 data()도 참조하십시오 .
bool QMimeData::hasHtml() const
객체가 HTML(MIME 유형 text/html)을 반환할 수 있는 경우 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다.
setHtml(), html(), hasFormat()도 참조하십시오 .
bool QMimeData::hasImage() const
객체가 이미지를 반환할 수 있는 경우 true 를 반환하고, 그렇지 않은 경우 false를 반환합니다.
setImageData(), imageData(), hasFormat()도 참조하십시오 .
bool QMimeData::hasText() const
객체가 일반 텍스트(MIME 유형 text/plain)를 반환할 수 있는 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
setText(), text(), hasHtml(), hasFormat()도 참조하십시오 .
bool QMimeData::hasUrls() const
객체가 URL 목록을 반환할 수 있는 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
URL은 MIME 유형 text/uri-list 에 해당합니다.
setUrls(), urls() 및 hasFormat()도 참조하십시오 .
QString QMimeData::html() const
객체에 저장된 데이터가 HTML(MIME 유형 text/html)인 경우 문자열을 반환하고, 그렇지 않은 경우 빈 문자열을 반환합니다.
setHtml(), hasHtml(), setData()도 참조하십시오 .
QVariant QMimeData::imageData() const
객체가 이미지를 반환할 수 있는 경우 QImage 를 저장하는 QVariant 를 반환하고, 그렇지 않은 경우 null variant를 반환합니다.
` 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 ’에 대한 데이터 항목을 삭제합니다.
[virtual protected] QVariant QMimeData::retrieveData(const QString &mimeType, QMetaType type) const
mimeType 에 지정된 MIME 유형에 대한 데이터가 포함된, 주어진 type 를 가진 변형을 반환합니다. 객체가 주어진 MIME 유형이나 변형 유형을 지원하지 않는 경우, 대신 null 변형이 반환됩니다.
이 함수는 일반 data() 게터와 편의 게터(text(), html(), urls(), imageData(), colorData())에 의해 호출됩니다. 사용자 정의 데이터 구조( setData()이 제공하는 QByteArray 대신)를 사용하여 데이터를 저장하려면 이 함수를 재구현할 수 있습니다. 이 경우 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)
mimeType 로 지정된 MIME 유형과 관련된 데이터를 지정된 data 로 설정합니다.
가장 일반적인 데이터 유형의 경우, 대신 상위 레벨 함수인 setText(), setHtml(), setUrls(), setImageData() 및 setColorData()을 호출할 수 있습니다.
항목 뷰의 드래그 앤 드롭 작업에서 사용자 정의 데이터형을 사용하려면, Q_DECLARE_METATYPE() 매크로를 사용하여 해당 데이터형을 Qt meta type 로 등록하고, 이에 대한 스트림 연산자를 구현해야 합니다.
data(), hasFormat(), QMetaType 및 Q_DECLARE_METATYPE()도 참조하십시오 .
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)
MIME 데이터 객체에 저장된 URL을 urls 에 지정된 URL로 설정합니다.
URL은 MIME 유형 text/uri-list 에 해당합니다.
Qt 5.0부터 setUrls는 이전에 setText 가 호출되지 않은 경우, URL을 일반 텍스트로 내보내어 어떤 라인 에디트나 텍스트 편집기에도 직접 붙여넣을 수 있도록 합니다.
urls(), hasUrls() 및 setData()도 참조하십시오 .
QString QMimeData::text() const
이 객체가 일반 텍스트를 포함하고 있는 경우, 해당 데이터의 일반 텍스트(MIME 유형 text/plain) 표현을 반환합니다. 다른 콘텐츠가 포함되어 있는 경우, 이 함수는 이를 일반 텍스트로 변환하기 위해 최선을 다합니다.
setText(), hasText(), html(), data()함수도 참조하십시오 .
QList<QUrl> QMimeData::urls() const
MIME 데이터 객체에 포함된 URL 목록을 반환합니다.
URL은 MIME 유형 text/uri-list 에 해당합니다.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.