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 と同じデータ型をサポートし、同様のメカニズムを使用します。高度なクリップボードの使い方については、ドラッグ&ドロップをお読みください。

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

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

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

これらの関数の典型的な使用例を以下に示す:

void DropArea::paste()
{
    const QClipboard *clipboard = QApplication::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は、カット/コピーアクション、改行文字、およびファイルのURLで始まるデータを持つx-special/gnome-copied-files MIMEタイプで供給されるファイルを期待しています。

macOSユーザーへの注意事項

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

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

  • WindowsとmacOSはグローバルマウス選択をサポートしていません。グローバルクリップボードのみをサポートしています。
  • WindowsとmacOSには所有権の概念がありません。クリップボードは完全にグローバルなリソースなので、すべてのアプリケーションに変更が通知されます。

Androidユーザーのための注意事項

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

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 引数は、システムクリップボードのどの部分を使用するかを制御するために使用される。modeQClipboard::Clipboard の場合、この関数はグローバルクリップボードの内容をクリアする。modeQClipboard::Selection の場合、この関数はグローバルなマウス選択内容をクリアする。modeQClipboard::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 引数は、システムクリップボードのどの部分を使用するかを制御するために使用されます。modeQClipboard::Clipboard の場合、画像はグローバルクリップボードから取得される。modeQClipboard::Selection の場合、画像はグローバルなマウス選択範囲から取得される。

setImage()、pixmap()、mimeData()、QImage::isNull()も参照のこと

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

現在のクリップボードデータのQMimeData 表現へのポインタを返す(与えられたmode がプラットフォームでサポートされていない場合は、nullptr でもよい)。

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

text ()、image ()、pixmap ()関数は、テキスト、画像、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

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

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

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 引数は、システムクリップボードのどの部分を使用するかを制御するために使用される。modeQClipboard::Clipboard の場合、画像はグローバルクリップボードに格納される。modeQClipboard::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 引数は、システム・クリップボードのどの部分を使用するかを制御するために使用されます。modeQClipboard::Clipboard の場合、データはグローバル・クリップボードに格納される。modeQClipboard::Selection の場合、データはグローバル・マウス選択範囲に格納されます。modeQClipboard::FindBuffer の場合、データは検索文字列バッファに格納される。

setText()、setImage()、setPixmap() 関数は、それぞれテキスト、画像、pixmap データを設定するための単純なラッパーである。

mimeData()も参照

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

pixmap をクリップボードにコピーする。最初にQPixmapQImage に変換する必要があるため、setImage() より遅いことに注意。

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

pixmap()、setImage()、setMimeData()も参照のこと

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

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

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

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

bool QClipboard::supportsFindBuffer() const

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

bool QClipboard::supportsSelection() const

クリップボードがマウス選択をサポートしている場合はtrue を返し、そうでない場合はfalse を返す。

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

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

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

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

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

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

クリップボードのテキストをサブタイプsubtype で返すか、クリップボードにテキストがない場合は空文字列を返す。subtype が NULL の場合、どのサブタイプでも受け入れられ、subtype が選択されたサブタイプに設定されます。

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

subtype の一般的な値は "plain "と "html "である。

キー・イベント・ハンドラなどからこの関数を繰り返し呼び出すと、時間がかかることがあります。そのような場合は、代わりにdataChanged() シグナルを使うべきである。

setText() およびmimeData()も参照の こと。

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