このページでは

QClipboard Class

QClipboard クラスは、ウィンドウシステムのクリップボードへのアクセスを提供します。詳細...

ヘッダー: #include <QClipboard>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
継承元: QObject

パブリック型

enum Mode { Clipboard, Selection, FindBuffer }

パブリック関数

void clear(QClipboard::Mode mode = Clipboard)
QImage image(QClipboard::Mode mode = Clipboard) const
const QMimeData *mimeData(QClipboard::Mode mode = Clipboard) const
bool ownsClipboard() const
bool ownsFindBuffer() const
bool ownsSelection() const
QPixmap pixmap(QClipboard::Mode mode = Clipboard) const
void setImage(const QImage &image, QClipboard::Mode mode = Clipboard)
void setMimeData(QMimeData *src, QClipboard::Mode mode = Clipboard)
void setPixmap(const QPixmap &pixmap, QClipboard::Mode mode = Clipboard)
void setText(const QString &text, QClipboard::Mode mode = Clipboard)
bool supportsFindBuffer() const
bool supportsSelection() const
QString text(QClipboard::Mode mode = Clipboard) const
QString text(QString &subtype, QClipboard::Mode mode = Clipboard) const

シグナル

void changed(QClipboard::Mode mode)
void dataChanged()
void findBufferChanged()
void selectionChanged()

詳細な説明

クリップボードは、アプリケーション間でデータをコピーおよび貼り付けするためのシンプルな仕組みを提供します。

QClipboard は、QDrag と同じデータ型をサポートしており、同様の仕組みを使用しています。クリップボードの高度な使用方法については、「ドラッグ&ドロップ」を参照してください。

アプリケーション内には 1 つの QClipboard オブジェクトが存在し、QGuiApplication::clipboard() としてアクセスできます。

例:

QClipboard *clipboard = QGuiApplication::clipboard();
QString originalText = clipboard->text();
// etc.
clipboard->setText(newText);

QClipboardには、一般的なデータ型にアクセスするための便利な関数がいくつか用意されています。setText()はUnicodeテキストのやり取りを可能にし、setPixmap()およびsetImage()は、アプリケーション間でQPixmapやQImageのやり取りを可能にします。setMimeData()関数は最高の柔軟性を備えており、任意のQMimeData をクリップボードに追加することができます。 これらそれぞれに対応する取得関数として、例えばtext()、image()、pixmap() などがあります。clear() を呼び出すことで、クリップボードをクリアできます。

これらの関数の使用例を以下に示します。

void DropArea::paste()
{
    const QClipboard *clipboard = QGuiApplication::clipboard();
    const QMimeData *mimeData = clipboard->mimeData();

    if (mimeData->hasImage()) {
        setPixmap(qvariant_cast<QPixmap>(mimeData->imageData()));
    } else if (mimeData->hasHtml()) {
        setText(mimeData->html());
        setTextFormat(Qt::RichText);
    } else if (mimeData->hasText()) {
        setText(mimeData->text());
        setTextFormat(Qt::PlainText);
    } else {
        setText(tr("Cannot display data"));
    }
}

X11 ユーザーへの注意事項

  • X11 ウィンドウシステムには、選択範囲とクリップボードが別個に扱われるという概念があります。テキストが選択されると、それは直ちにグローバルマウス選択範囲として利用可能になります。グローバルマウス選択範囲は、後でクリップボードにコピーされることがあります。慣例により、マウスの中ボタンはグローバルマウス選択範囲を貼り付けるために使用されます。
  • X11 には「所有権」という概念もあります。ウィンドウ内で選択範囲を変更した場合、X11 はその変更を所有者と前の所有者にのみ通知します。つまり、選択範囲やクリップボードのデータが変更されたことをすべてのアプリケーションに通知するわけではありません。
  • 最後に、X11のクリップボードはイベント駆動型です。つまり、イベントループが実行されていない場合、クリップボードは正常に機能しません。同様に、クリップボードの内容の保存や取得は、マウスボタンの押下・離しやキーの押下・離しといったユーザー入力イベントに直接応じて行うことが推奨されます。 タイマーやユーザー入力以外のイベントに応じて、クリップボードの内容を保存または取得すべきではありません。
  • X11 では、アプリケーション間でファイルをコピー・貼り付けするための標準的な方法がないため、現在、さまざまな MIME タイプや規約が使用されています。たとえば、Nautilus では、ファイルがx-special/gnome-copied-files という MIME タイプで提供され、データが切り取り/コピー操作、改行文字、およびファイルの URL で始まることを想定しています。

macOS ユーザーへの注意事項

macOS では、検索操作の際に現在の検索文字列を保持する専用の検索バッファがサポートされています。この検索クリップボードには、FindBuffer モードを指定することでアクセスできます。

Windows および macOS ユーザーへの注意事項

  • Windows および macOS はグローバルなマウス選択機能をサポートしておらず、グローバルクリップボードのみをサポートしています。つまり、明示的なコピーまたは切り取りが行われた場合にのみ、テキストがクリップボードに追加されます。
  • WindowsおよびmacOSには「所有権」という概念がありません。クリップボードは完全にグローバルなリソースであるため、変更があった場合はすべてのアプリケーションに通知されます。

Android ユーザーへの注意

Android では、text/plain、text/html、text/uri-list の MIME タイプのみがサポートされています。

QGuiApplicationも参照してください 。

メンバタイプのドキュメント

enum QClipboard::Mode

この列挙型は、QClipboard::mimeData()、QClipboard::setMimeData()、および関連する関数によって、システムのクリップボードのどの部分が使用されるかを制御するために使用されます。

定数定数値定数値
QClipboard::Clipboard0は、データがグローバルクリップボードに保存および取得されることを示します。
QClipboard::Selection1は、データがグローバルマウス選択領域に保存および取得されることを示します。Selection のサポートは、グローバルマウス選択領域があるシステム(X11 など)でのみ提供されます。
QClipboard::FindBuffer2は、データを検索バッファに保存および検索バッファから取得することを示します。このモードは、macOS で検索文字列を保持するために使用されます。

QClipboard::supportsSelection()も参照してください 。

メンバ関数のドキュメント

[signal] void QClipboard::changed(QClipboard::Mode mode)

このシグナルは、指定されたクリップボードmode のデータが変更されたときに発せられます。

dataChanged()、selectionChanged()、およびfindBufferChanged()も参照してください 。

void QClipboard::clear(QClipboard::Mode mode = Clipboard)

クリップボードの内容を消去します。

mode 引数は、システムのクリップボードのどの部分を使用するかを制御するために使用されます。mode がQClipboard::Clipboard の場合、この関数はグローバルクリップボードの内容をクリアします。mode がQClipboard::Selection の場合、この関数はグローバルマウス選択の内容をクリアします。mode がQClipboard::FindBuffer の場合、この関数は検索文字列バッファをクリアします。

QClipboard::Mode およびsupportsSelection()も参照してください 。

[signal] void QClipboard::dataChanged()

このシグナルは、クリップボードのデータが変更されたときに発火します。

macOS および Qt バージョン 4.3 以降では、他のアプリケーションによるクリップボードの変更は、そのアプリケーションがアクティブになっている場合にのみ検出されます。

findBufferChanged()、selectionChanged()、およびchanged()も参照してください 。

[signal] void QClipboard::findBufferChanged()

このシグナルは、検索バッファが変更されたときに発信されます。これは macOS でのみ適用されます。

Qt バージョン 4.3 以降では、他のアプリケーションによるクリップボードの変更は、そのアプリケーションがアクティブになっている場合にのみ検出されます。

dataChanged()、selectionChanged()、およびchanged()も参照してください 。

QImage QClipboard::image(QClipboard::Mode mode = Clipboard) const

クリップボードの画像を返します。クリップボードに画像が含まれていない場合、またはサポートされていない画像形式の画像が含まれている場合は、null 画像を返します。

mode 引数は、システムのクリップボードのどの部分を使用するかを制御するために使用されます。mode がQClipboard::Clipboard の場合、画像はグローバルクリップボードから取得されます。mode がQClipboard::Selection の場合、画像はグローバルマウス選択から取得されます。

関連項目: setImage()、pixmap()、mimeData()、およびQImage::isNull()。

const QMimeData *QClipboard::mimeData(QClipboard::Mode mode = Clipboard) const

現在のクリップボードデータのQMimeData 表現へのポインタを返します(指定されたmode がプラットフォームでサポートされていない場合は、nullptr となる場合があります)。

mode mode mode 引数は、システムクリップボードのどの部分を使用するかを制御するために使用されます。 が の場合、データはグローバルクリップボードから取得されます。 が の場合、データはグローバルマウス選択範囲から取得されます。 が の場合、データは検索文字列バッファから取得されます。QClipboard::Clipboard mode QClipboard::Selection QClipboard::FindBuffer

text()、image()、およびpixmap() 関数は、テキスト、画像、およびピクマップデータを取得するための、より単純なラッパー関数です。

注: 設定関数の呼び出しや、システムクリップボードの変更などによりクリップボードの内容が変更されると、返されたポインタが無効 になる場合があります。

setMimeData()も参照してください 。

bool QClipboard::ownsClipboard() const

このクリップボードオブジェクトがクリップボードデータを保持している場合は `true ` を返し、そうでない場合は `false` を返します。

bool QClipboard::ownsFindBuffer() const

このクリップボードオブジェクトが検索バッファデータを保持している場合は `true ` を返し、そうでない場合は `false` を返します。

bool QClipboard::ownsSelection() const

このクリップボードオブジェクトがマウスの選択データを保持している場合は `true ` を返し、そうでない場合は `false` を返します。

QPixmap QClipboard::pixmap(QClipboard::Mode mode = Clipboard) const

クリップボードのピクマップを返します。クリップボードにピクマップが含まれていない場合は null を返します。この処理によって情報が失われる可能性があることに注意してください。たとえば、画像が 24 ビットでディスプレイが 8 ビットの場合、結果は 8 ビットに変換されます。また、画像にアルファチャンネルが含まれている場合、結果にはマスクのみが含まれます。

mode 引数は、システムクリップボードのどの部分を使用するかを制御するために使用されます。mode がQClipboard::Clipboard の場合、ピクマップはグローバルクリップボードから取得されます。mode がQClipboard::Selection の場合、ピクマップはグローバルマウス選択から取得されます。

setPixmap()、image()、mimeData()、およびQPixmap::convertFromImage()も参照してください 。

[signal] void QClipboard::selectionChanged()

このシグナルは、選択範囲が変更されたときに発信されます。これは、X11など、選択範囲をサポートするウィンドウシステムにのみ適用されます。Windows および macOS は選択範囲をサポートしていません。

dataChanged()、findBufferChanged()、およびchanged()も参照してください 。

void QClipboard::setImage(const QImage &image, QClipboard::Mode mode = Clipboard)

image をクリップボードにコピーします。

引数mode は、システムのクリップボードのどの部分を使用するかを制御するために使用されます。mode がQClipboard::Clipboard の場合、画像はグローバルクリップボードに保存されます。mode がQClipboard::Selection の場合、データはグローバルマウス選択領域に保存されます。

これは以下の記述の省略形です:

QMimeData *data = new QMimeData;
data->setImageData(image);
clipboard->setMimeData(data, mode);

image()、setPixmap()、およびsetMimeData()も参照してください 。

void QClipboard::setMimeData(QMimeData *src, QClipboard::Mode mode = Clipboard)

クリップボードのデータを `src` に設定します。データの所有権はクリップボードに移管されます。データを削除したい場合は、clear() を呼び出すか、新しいデータを指定して setMimeData() を再度呼び出してください。

mode 引数は、システムクリップボードのどの部分を使用するかを制御するために使用されます。mode がQClipboard::Clipboard の場合、データはグローバルクリップボードに保存されます。mode がQClipboard::Selection の場合、データはグローバルマウス選択領域に保存されます。mode がQClipboard::FindBuffer の場合、データは検索文字列バッファに保存されます。

setText()、setImage()、およびsetPixmap() 関数は、それぞれテキスト、画像、ピクマップデータを設定するための、より単純なラッパー関数です。

mimeData()も参照してください 。

void QClipboard::setPixmap(const QPixmap &pixmap, QClipboard::Mode mode = Clipboard)

pixmap をクリップボードにコピーします。なお、QPixmap をまずQImage に変換する必要があるため、setImage()よりも処理速度が遅くなります。

mode 引数 `mode ` は、システムのクリップボードのどの部分を使用するかを制御するために使用されます。mode が `QClipboard::Clipboard` の場合、ピクマップはグローバルクリップボードに格納されます。 が `QClipboard::Selection` の場合、ピクマップはグローバルマウス選択領域に格納されます。

pixmap()、setImage()、およびsetMimeData()も参照してください 。

void QClipboard::setText(const QString &text, QClipboard::Mode mode = Clipboard)

text をプレーンテキストとしてクリップボードにコピーします。

引数 `mode ` は、システムのクリップボードのどの部分を使用するかを制御するために使用されます。`mode ` が `QClipboard::Clipboard` の場合、テキストはグローバルクリップボードに保存されます。`mode ` が `QClipboard::Selection` の場合、テキストはグローバルマウス選択領域に保存されます。`mode ` が `QClipboard::FindBuffer` の場合、テキストは検索文字列バッファに保存されます。

text() およびsetMimeData()も参照してください 。

bool QClipboard::supportsFindBuffer() const

クリップボードが独立した検索バッファをサポートしている場合は `true ` を返し、そうでない場合は `false` を返します。

bool QClipboard::supportsSelection() const

クリップボードがマウス選択に対応している場合は `true ` を返し、そうでない場合は `false` を返します。

QString QClipboard::text(QClipboard::Mode mode = Clipboard) const

クリップボードのテキストをプレーンテキストとして返します。クリップボードにテキストが含まれていない場合は、空の文字列を返します。

mode 引数は、システムのクリップボードのどの部分を使用するかを制御するために使用されます。mode がQClipboard::Clipboard の場合、テキストはグローバルクリップボードから取得されます。mode がQClipboard::Selection の場合、テキストはグローバルマウス選択範囲から取得されます。mode がQClipboard::FindBuffer の場合、テキストは検索文字列バッファから取得されます。

setText() およびmimeData()も参照してください 。

QString QClipboard::text(QString &subtype, QClipboard::Mode mode = Clipboard) const

subtype のサブタイプでクリップボードのテキストを返します。クリップボードにテキストが含まれていない場合は、空の文字列を返します。subtype が null の場合、任意のサブタイプが許容され、subtype は選択されたサブタイプに設定されます。

mode 引数は、システムのクリップボードのどの部分を使用するかを制御するために使用されます。mode がQClipboard::Clipboard の場合、テキストはグローバルクリップボードから取得されます。mode がQClipboard::Selection の場合、テキストはグローバルマウス選択範囲から取得されます。

subtype の一般的な値は「plain」と「html」です。

なお、キーイベントハンドラなどからこの関数を繰り返し呼び出すと、処理が遅くなる場合があります。そのような場合は、代わりにdataChanged() シグナルを使用してください。

これはオーバーロードされた関数です。

setText() およびmimeData()も参照してください 。

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