QClipboard 類

The QClipboard 類提供對窗口係統剪貼闆的訪問。 更多...

頭: #include <QClipboard>
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 ()

靜態公共成員

const QMetaObject staticMetaObject

額外繼承成員

詳細描述

The QClipboard 類提供對窗口係統剪貼闆的訪問。

剪貼闆提供在應用程序之間拷貝和粘貼數據的簡單機製。

QClipboard 支持相同數據類型如 QDrag 所做的,且使用類似機製。對於高級剪貼闆用法,閱讀 拖放 .

存在單個 QClipboard 對象在應用程序中,可訪問作為 QGuiApplication::clipboard ().

範例:

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

QClipboard 特徵化瞭一些訪問常見數據類型的方便函數: setText () 允許交換 Unicode 文本和 setPixmap () 和 setImage () 允許交換 QPixmap 和 QImage 在應用程序之間。 setMimeData () 函數最具靈活性:它允許添加任何 QMimeData 到剪貼闆。這些中的每個都有相應 Getter,如 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 期望提供文件按 x-special/gnome-copied-files MIME 類型,具有以剪切/拷貝動作開始的數據,換行符和文件 URL。

macOS 用戶注意事項

macOS supports a separate find buffer that holds the current search string in Find operations. This find clipboard can be accessed by specifying the FindBuffer 模式。

Windows 和 macOS 用戶注意事項

  • Windows and macOS do not support the global mouse selection; they only supports the global clipboard, i.e. they only add text to the clipboard when an explicit copy or cut is made.
  • Windows and macOS does not have the concept of ownership; the clipboard is a fully global resource so all applications are notified of changes.

UWP (通用 Windows 平颱) 用戶注意事項

  • UWP (通用 Windows 平颱) 纔允許查詢剪貼闆,若應用程序活動且應用程序窗口有聚焦。當在後颱訪問剪貼闆數據時會失敗,由於拒絕訪問。

另請參閱 QGuiApplication .

成員類型文檔編製

enum QClipboard:: Mode

此枚舉類型用來控製係統剪貼闆的哪一部分將用於 QClipboard::mimeData (), QClipboard::setMimeData () 和相關函數。

常量 描述
QClipboard::Clipboard 0 指示應該從全局剪貼闆,存儲和檢索數據。
QClipboard::Selection 1 指示應該從全局鼠標選定,存儲和檢索數據。支持 Selection 僅在具有全局鼠標選定 (如 X11) 的係統中提供。
QClipboard::FindBuffer 2 indicates that data should be stored and retrieved from the Find buffer. This mode is used for holding search strings on macOS .

另請參閱 QClipboard::supportsSelection ().

成員函數文檔編製

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

此信號被發射當數據對於給定剪貼闆 mode 改變。

該函數在 Qt 4.2 引入。

另請參閱 dataChanged (), selectionChanged (),和 findBufferChanged ().

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

清零剪貼闆內容。

The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,此函數清零全局剪貼闆內容。若 mode is QClipboard::Selection ,此函數清零全局鼠標選定內容。若 mode is QClipboard::FindBuffer ,此函數清零搜索字符串緩衝。

另請參閱 QClipboard::Mode and supportsSelection ().

[signal] void QClipboard:: dataChanged ()

此信號被發射,當剪貼闆數據改變時。

On macOS and with Qt version 4.3 or higher, clipboard changes made by other applications will only be detected when the application is activated.

另請參閱 findBufferChanged (), selectionChanged (),和 changed ().

[signal] void QClipboard:: findBufferChanged ()

This signal is emitted when the find buffer is changed. This only applies to macOS .

采用 Qt 4.3 或更高版本,由其它應用程序所做的剪貼闆改變,僅當應用程序被激活時纔檢測。

該函數在 Qt 4.2 引入。

另請參閱 dataChanged (), selectionChanged (),和 changed ().

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

返迴剪貼闆圖像,或返迴 null 圖像若剪貼闆不包含圖像,或者若它包含不被支持的圖像格式的圖像。

The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,圖像檢索自全局剪貼闆。若 mode is QClipboard::Selection ,圖像檢索自全局鼠標選定。

另請參閱 setImage (), pixmap (), mimeData (),和 QImage::isNull ().

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

返迴指針指嚮 QMimeData 錶示的當前剪貼闆數據 (可以為 null 若給定 mode 不被平颱支持)。

The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,數據檢索自全局剪貼闆。若 mode is QClipboard::Selection ,數據檢索自全局鼠標選定。若 mode is QClipboard::FindBuffer ,數據檢索自搜索字符串緩衝。

The text (), image (),和 pixmap () 函數是用於檢索文本、圖像及像素圖數據的更簡單包裝器。

注意: 返迴指針可能變為失效,當剪貼闆內容改變時;通過調用某一 setter 函數或在外部通過係統剪貼闆改變。

另請參閱 setMimeData ().

bool QClipboard:: ownsClipboard () const

返迴 true 若此剪貼闆對象擁有剪貼闆數據;否則返迴 false .

bool QClipboard:: ownsFindBuffer () const

返迴 true 若此剪貼闆對象擁有查找緩衝數據;否則返迴 false .

該函數在 Qt 4.2 引入。

bool QClipboard:: ownsSelection () const

返迴 true 若此剪貼闆對象擁有鼠標選定數據;否則返迴 false .

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

返迴剪貼闆像素圖,或 null 若剪貼闆不包含像素圖。注意,這可能丟失信息。例如,若圖像為 24 位和顯示為 8 位,則結果將被轉換為 8 位,且若圖像擁有 Alpha 通道,則結果僅僅擁有遮罩。

The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,像素圖檢索自全局剪貼闆。若 mode is QClipboard::Selection ,像素圖檢索自全局鼠標選定。

另請參閱 setPixmap (), image (), mimeData (),和 QPixmap::convertFromImage ().

[signal] void QClipboard:: selectionChanged ()

This signal is emitted when the selection is changed. This only applies to windowing systems that support selections, e.g. X11. Windows and macOS don't support selections.

另請參閱 dataChanged (), findBufferChanged (),和 changed ().

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

拷貝 image 到剪貼闆。

The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,圖像存儲在全局剪貼闆中。若 mode is 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() 再次采用新數據。

The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,數據存儲在全局剪貼闆中。若 mode is QClipboard::Selection ,數據存儲在全局鼠標選定中。若 mode is QClipboard::FindBuffer ,數據存儲在搜索字符串緩衝中。

The setText (), setImage () 和 setPixmap () 函數是分彆設置文本、圖像及像素圖數據的更簡單包裝器。

另請參閱 mimeData ().

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

拷貝 pixmap 到剪貼闆。注意,這更慢相比 setImage () 因為它需要轉換 QPixmap QImage 首先。

The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,像素圖存儲在全局剪貼闆中。若 mode is QClipboard::Selection ,像素圖存儲在全局鼠標選定中。

另請參閱 pixmap (), setImage (),和 setMimeData ().

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

拷貝 text 到剪貼闆以純文本形式。

The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,文本存儲在全局剪貼闆中。若 mode is QClipboard::Selection ,文本存儲在全局鼠標選定中。若 mode is QClipboard::FindBuffer ,文本存儲在搜索字符串緩衝中。

另請參閱 text () 和 setMimeData ().

bool QClipboard:: supportsFindBuffer () const

返迴 true 若剪貼闆支持單獨搜索緩衝;否則返迴 false .

bool QClipboard:: supportsSelection () const

返迴 true 若剪貼闆支持鼠標選定;否則返迴 false .

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

以純文本形式返迴剪貼闆文本,或空字符串若剪貼闆未包含任何文本。

The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,文本檢索自全局剪貼闆。若 mode is QClipboard::Selection ,文本檢索自全局鼠標選定。若 mode is QClipboard::FindBuffer ,文本檢索自搜索字符串緩衝。

另請參閱 setText () 和 mimeData ().

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

這是重載函數。

返迴剪貼闆文本按子類型 subtype ,或空字符串若剪貼闆未包含任何文本。若 subtype 為 null,任何子類型都可接受,和 subtype 被設為選取子類型。

The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,文本檢索自全局剪貼闆。若 mode is QClipboard::Selection ,文本檢索自全局鼠標選定。

常見值對於 subtype 為 plain 和 html。

請注意,重復調用此函數 (例如:從鍵事件處理程序) 可能很慢。在這種情況下,應使用 dataChanged() 信號代替。

另請參閱 setText () 和 mimeData ().