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")); }
x-special/gnome-copied-files
MIME 類型,具有以剪切/拷貝動作開始的數據,換行符和文件 URL。
macOS 支持單獨查找緩衝,以保持查找操作中的當前搜索字符串。此查找剪貼闆可以被訪問通過指定 FindBuffer 模式。
另請參閱 QGuiApplication .
此枚舉類型用來控製係統剪貼闆的哪一部分將用於 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 ().
清零剪貼闆內容。
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 ().
返迴剪貼闆圖像,或返迴 null 圖像若剪貼闆不包含圖像,或者若它包含不被支持的圖像格式的圖像。
The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,圖像檢索自全局剪貼闆。若 mode is QClipboard::Selection ,圖像檢索自全局鼠標選定。
另請參閱 setImage (), pixmap (), mimeData (),和 QImage::isNull ().
返迴指針指嚮 QMimeData 錶示的當前剪貼闆數據 (可以為 null 若給定 mode 不被平颱支持)。
The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,數據檢索自全局剪貼闆。若 mode is QClipboard::Selection ,數據檢索自全局鼠標選定。若 mode is QClipboard::FindBuffer ,數據檢索自搜索字符串緩衝。
The text (), image (),和 pixmap () 函數是用於檢索文本、圖像及像素圖數據的更簡單包裝器。
注意: 返迴指針可能變為失效,當剪貼闆內容改變時;通過調用某一 Setter 函數或在外部通過係統剪貼闆改變。
另請參閱 setMimeData ().
返迴
true
若此剪貼闆對象擁有剪貼闆數據;否則返迴
false
.
返迴
true
若此剪貼闆對象擁有查找緩衝數據;否則返迴
false
.
該函數在 Qt 4.2 引入。
返迴
true
若此剪貼闆對象擁有鼠標選定數據;否則返迴
false
.
返迴剪貼闆像素圖,或 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 ().
拷貝 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 ().
將剪貼闆數據設為 src 。將數據的所有權轉移給剪貼闆。若想要移除數據,調用 clear () 或調用 setMimeData() 再次采用新數據。
The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,數據存儲在全局剪貼闆中。若 mode is QClipboard::Selection ,數據存儲在全局鼠標選定中。若 mode is QClipboard::FindBuffer ,數據存儲在搜索字符串緩衝中。
The setText (), setImage () 和 setPixmap () 函數是分彆設置文本、圖像及像素圖數據的更簡單包裝器。
另請參閱 mimeData ().
拷貝 pixmap 到剪貼闆。注意,這更慢相比 setImage () 因為它需要轉換 QPixmap 到 QImage 首先。
The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,像素圖存儲在全局剪貼闆中。若 mode is QClipboard::Selection ,像素圖存儲在全局鼠標選定中。
另請參閱 pixmap (), setImage (),和 setMimeData ().
拷貝 text 到剪貼闆以純文本形式。
The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,文本存儲在全局剪貼闆中。若 mode is QClipboard::Selection ,文本存儲在全局鼠標選定中。若 mode is QClipboard::FindBuffer ,文本存儲在搜索字符串緩衝中。
另請參閱 text () 和 setMimeData ().
返迴
true
若剪貼闆支持單獨搜索緩衝;否則返迴
false
.
返迴
true
若剪貼闆支持鼠標選定;否則返迴
false
.
以純文本形式返迴剪貼闆文本,或空字符串若剪貼闆未包含任何文本。
The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,文本檢索自全局剪貼闆。若 mode is QClipboard::Selection ,文本檢索自全局鼠標選定。若 mode is QClipboard::FindBuffer ,文本檢索自搜索字符串緩衝。
另請參閱 setText () 和 mimeData ().
這是重載函數。
返迴剪貼闆文本按子類型 subtype ,或空字符串若剪貼闆未包含任何文本。若 subtype 為 null,任何子類型都可接受,和 subtype 被設為選取子類型。
The mode 自變量用於控製使用係統剪貼闆的哪一部分。若 mode is QClipboard::Clipboard ,文本檢索自全局剪貼闆。若 mode is QClipboard::Selection ,文本檢索自全局鼠標選定。
常見值對於 subtype 為 plain 和 html。
請注意,重復調用此函數 (例如:從鍵事件處理程序) 可能很慢。在這種情況下,應使用
dataChanged()
信號代替。