QT QMimeData類


http://blog.csdn.net/xie376450483/article/details/5863810

 

QMimeData類提為數據提供一個容器,用來記錄關於MIME類型數據的信息
QMimeData常用來描述保存在剪切板里信息,或者拖拽原理
QMimeData對象把它所保存的信息和正確的MIME類型連接起來來保證信息可以被安全的在應用程序之間轉移

,或者在同一個應用程序之間拷貝
QMimeData對象通產雇佣new來創建,並且支持QDrag和QClipboard對象,這可以使QT管理他們所使用的內存

單一的QMimeData對象可以同時用好幾種不同的格式來存儲同一個數據,formats()函數返回可以用的數據

格式的list,data()函數可以返回和MIME類型相連的數據類型,setData()用來為MIME類型設置數據

對於大多數MIME類型,QMimeData提供方便的函數來獲取數據

例如,如果想讓一個widget接受URL拖拽,可以使用下面的代碼
 void MyWidget::dragEnterEvent(QDragEnterEvent *event)
 {
     if (event->mimeData()->hasUrls())
         event->acceptProposedAction();
 }

 void MyWidget::dropEvent(QDropEvent *event)
 {
     if (event->mimeData()->hasUrls()) {
         foreach (QUrl url, event->mimeData()->urls()) {
             ...
         }
     }
 }

有三種方法在QMimeData對象中來存儲通常的數據
1、通常的數據可以象QByteArray()使用setData()直接存儲在一個QMimeData對象中,例如
QByteArray csvData = ...;
 QMimeData *mimeData = new QMimeData;
 mimeData->setData("text/csv", csvData);
2、我們可以派生QMimeData類,繼承hasFormat(),formats(),retrieveData()函數
3、如果拖拽行為發生在一個應用程序中,我們可以派生QMimeData類,並且為他添加額外的數據,
使用qobject_cast()在接受拖拽函數中,例如
  void MyWidget::dropEvent(QDropEvent *event)
     {
 const MyMimeData *myData=
          qobject_cast<const MyMimeData *>(event->mimeData());
      if (myData) {
          // access myData's data directly (not through QMimeData's API)
     }

詳細例程看
http://blog.csdn.net/xie376450483/archive/2010/08/25/5838892.aspx
http://blog.csdn.net/xie376450483/archive/2010/08/26/5839058.aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM