下面來看乙個很簡單的例子,就是將桌面上的.txt檔案拖入到text edit中。新建 qt widgets應用,基類選擇 qmainwindow,並向介面上拖入乙個text edit部件
protected:
void
dragenterevent(qdragenterevent * event); // 拖動進入事件
void dropevent(qdropevent * event); // 放下事件
#include
#include
#include
#include
#include
void mainwindow::dragenterevent(qdragenterevent *event) // 拖動進入事件
else event->ignore(); // 否則忽略該事件
}void mainwindow::dropevent(qdropevent *event) // 放下事件
}}
setacceptdrops(true); //設定主視窗可以接收放下事件,預設為 flase
測試函式
獲取函式
設定函式
mime型別
hastext( )
text( )
settext( )
text/plain
hashtml( )
html( )
sethtml( )
text/html
hasurls( )
urls( )
seturls( )
text/uri-list
hasimage( )
imagedata( )
setimagedata( )
image/*
hascolor( )
colordata( )
setcolordata( )
當滑鼠拖拽乙個資料進入主視窗是,就會觸發dragenterevent()
事件處理函式,從而獲取其中的mime資料;然後檢視他是否包含url路徑。因為拖入文字實際上就是拖入了它的路徑,這就是event->mimedata( )->hasurls( )
實現的功能。如果有這樣的資料,就接受它,否則忽略該事件。當鬆開滑鼠左鍵時,將資料放入主視窗(我們這裡是重新實現了主視窗的拖放動作相應的事件函式)時就會觸發dropevent( )
事件處理函式,這裡獲取了mime資料中的url列表。因為拖入的只有乙個檔案,所以獲取了列表中的第乙個條目,並使用tolocalfile( )
函式將它轉換為本地檔案路徑。然後使用qfile和qtextstream將檔案中的資料讀入的編輯器中。
現在執行程式,然後從桌面上將乙個文字檔案拖入程式的主視窗介面(不是裡面的text edit部件,我們這裡是重新實現了主視窗的拖放動作相應的事件函式),可以看到文字編輯器中顯示了文字檔案中的內容。
QT學習筆記 拖放操作
qt具備強大的拖放機制。拖放操作分為drag 拖動 和drop 放下 跟拖放相關的類是qdragenterevent,也是繼承自qevent 當資料被拖動會被儲存為mime型別的資料。qt使用qmimedata類表示mime 拖動事件 virtual protected void qwidget d...
3Qt檔案拖放操作
檔案拖放技術是程式設計中的一項重要的技術,可以快速的開啟檔案,複製檔案等 1標頭檔案 ifndef mylable h define mylable h include include include include include class mylable public qlabel endif...
檔案拖放操作
我們知道,很多程式都直接檔案拖放。例如常見的excel,word等等。如果要為我們自己的應用程式新增檔案拖放到支援,那麼可以按照如下的一些步驟完成 1.設定窗體的allowdrop屬性為true 2.編寫兩個事件 dragenter和dragdrop 以下是我的乙個小軟體中的兩段 供參考 當拖放檔案...