QClipboard 類

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

頭: #include <QClipboard>
qmake: QT += gui
繼承: QObject

公共類型

enum Mode { Clipboard, Selection, FindBuffer }

公共函數

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

信號

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

額外繼承成員

詳細描述

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 支持單獨查找緩衝,以保持查找操作中的當前搜索字符串。此查找剪貼闆可以被訪問通過指定 FindBuffer 模式。

Windows 和 macOS 用戶注意事項

  • Windows 和 macOS 不支持全局鼠標選定;它們僅支持全局剪貼闆 (即:它們纔將文本添加到剪貼闆,當進行明確拷貝或剪切時)。
  • Windows 和 macOS 沒有所有權概念;剪貼闆完全是全局資源,因此所有應用程序都有改變通知。

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

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

另請參閱 QGuiApplication .

成員類型文檔編製

enum QClipboard:: Mode

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

常量 描述
QClipboard::Clipboard 0 指示應該從全局剪貼闆,存儲和檢索數據。
QClipboard::Selection 1 指示應該從全局鼠標選定,存儲和檢索數據。支持 Selection 僅在具有全局鼠標選定 (如 X11) 的係統中提供。
QClipboard::FindBuffer 2 指示應該從查找緩衝,存儲和檢索數據。此模式用於在 macOS 保持搜索字符串。

另請參閱 QClipboard::supportsSelection ().

成員函數文檔編製

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

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

該函數在 Qt 4.2 引入。

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

void QClipboard:: clear ( 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 ()

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

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

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

[signal] void QClipboard:: findBufferChanged ()

此信號被發射,當查找緩衝改變時。這僅適用於 macOS。

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

該函數在 Qt 4.2 引入。

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

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

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

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

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

const QMimeData *QClipboard:: mimeData ( 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 ( 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 ()

此信號被發射,當選定改變時。這隻適用於支持選定的窗口係統,如 X11。Windows 和 macOS 不支持選定。

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

void QClipboard:: setImage (const QImage & image , 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 , 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 , 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 , 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 ( 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 , Mode mode = Clipboard) const

這是重載函數。

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

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

常見值對於 subtype 為 plain 和 html。

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

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