QClipboard Class

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

Header: #include <QClipboard>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Inherits: 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 ()はアプリケーション間でQPixmapsと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

この enum 型は、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()も参照してください

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。