拖拽與剪切板
1、Drag與Drop
為用戶(hù)提供的拖曳功能很直觀,在很多桌面應(yīng)用程序中,復(fù)制或移動(dòng)對(duì)象都可以通過(guò)拖曳來(lái)完成。
基于MIME類(lèi)型的拖曳數(shù)據(jù)傳輸是基于QDrag類(lèi)的。QMimeData對(duì)象將關(guān)聯(lián)的數(shù)據(jù)與其對(duì)應(yīng)的MIME類(lèi)型相關(guān)聯(lián)。
MIME 類(lèi)型的數(shù)據(jù)可以簡(jiǎn)單理解為互聯(lián)網(wǎng)上的各種資源,比如文本、音頻和視頻資源等,互聯(lián)網(wǎng)上的每一種資源都屬于一種 MIME類(lèi)型的數(shù)據(jù)。
如表1所示的MimeData類(lèi)函數(shù)允許檢測(cè)和使用方便的MIME類(lèi)型。

許多QWidget對(duì)象都支持拖曳動(dòng)作,允許拖曳數(shù)據(jù)的控件必須設(shè)置QWidget.setDragEnabled()為 True。另外,控件應(yīng)該響應(yīng)拖曳事件,以便存儲(chǔ)所拖曳的數(shù)據(jù)。常用的拖曳事件如表2所示。

實(shí)例演示:拖拽功能
運(yùn)行程序,顯示效果如下:

代碼分析:
在這個(gè)例子中,DragEnterEvent會(huì)驗(yàn)證事件的MIME 數(shù)據(jù)是否包含字符串文本,如果包含字符串文本,就接收事件提出的添加文本操作,并將文本作為新條目(lItem)添加到 ComboBox控件中,否則忽略此次操作。
2、QClipboard
QClipboard類(lèi)提供了對(duì)系統(tǒng)剪貼板的訪問(wèn),可以在應(yīng)用程序之間復(fù)制和粘貼數(shù)
據(jù)。它的操作類(lèi)似于QDrag類(lèi),并使用類(lèi)似的數(shù)據(jù)類(lèi)型。
QApplication類(lèi)有一個(gè)靜態(tài)方法clipboard(),它返回對(duì)剪貼板對(duì)象的引用。任何類(lèi)型的MimeData都可以從剪貼板復(fù)制或粘貼。
QClipboard類(lèi)中的常用方法如表3所示。

QClipboard類(lèi)中的常用信號(hào)如下表:

實(shí)例演示2:QClipboard的使用
運(yùn)行程序,顯示效果如下:

代碼分析:
在這個(gè)例子中,有6個(gè)按鈕和2個(gè)標(biāo)簽。需要實(shí)例化clipboard對(duì)象,可以將文本復(fù)制到clipboard對(duì)象中。
也可以將圖片復(fù)制到剪貼板對(duì)象中。
粘貼圖片:
