QMimeData Class

QMimeData 클래스는 MIME 유형에 대한 정보를 기록하는 데이터 컨테이너를 제공합니다. 더 보기...

Header: #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는 데이터에 액세스하기 위한 편의 함수를 제공합니다:

TesterGetterSetterMIME 타입
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 객체에 사용자 정의 데이터를 저장하는 방법에는 세 가지가 있습니다:

  1. 사용자 지정 데이터는 setData()를 사용하여 QByteArray 로 QMimeData 객체에 직접 저장할 수 있습니다. 예를 들어
    QByteArray csvData = ...;
    
    QMimeData *mimeData = new QMimeData;
    mimeData->setData("text/csv", csvData);
  2. QMimeData를 서브클래싱하고 hasFormat(), formats() 및 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에서 formats()는 x-qt-windows-mime 하위 형식을 사용하여 비표준 형식의 데이터를 나타내는 사용자 정의 형식을 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는 QWindowsMimeConverter 를 제공하여 클립보드 형식을 개방형 표준 MIME 형식으로 매핑합니다. 마찬가지로, QUtiMimeConverter 은 macOS와 iOS에서 MIME을 유니폼 타입 식별자에 매핑합니다.

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 변형을 반환합니다.

QMimeDataQt Core 모듈에 속하고 QColorQt GUI 에 속하기 때문에 QVariant 이 사용됩니다. QVariantQColor 으로 변환하려면 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

객체가 색을 반환할 수 있으면 true 을 반환하고(MIME 타입 application/x-color), 그렇지 않으면 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 변형을 반환합니다.

QMimeDataQt Core 모듈에 속하고 QImageQt GUI 에 속하기 때문에 QVariant 이 사용됩니다. QVariantQImage 으로 변환하려면 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(MIME 유형 text/html)로 html 을 설정합니다.

html(), hasHtml(), setText() 및 setData()도 참조하세요 .

void QMimeData::setImageData(const QVariant &image)

객체의 데이터를 주어진 image 으로 설정합니다.

QMimeDataQt Core 모듈에 속하고 QImageQt GUI 에 속하기 때문에 QVariant 이 사용됩니다. QImage 에서 QVariant 으로의 변환은 암시적입니다. 예를 들어

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

imageData(), hasImage() 및 setData()도 참조하세요 .

void QMimeData::setText(const QString &text)

데이터를 표현하는 데 사용되는 일반 텍스트(MIME 유형 text/plain)로 text 를 설정합니다.

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 에 해당합니다.

setUrls(), hasUrls(), data()도 참조하세요 .

© 2025 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.