我在拖動&下降時遇到了很大的麻煩。我創建了一個新的Qt設計器表單類,其中我有一個QListWidget和一個QWidget。現在我想在這兩個小部件之間拖放&。使用.ui文件拖放
問題是,我可以在哪裏添加dragEnterEven(...),dragMoveEvent(...)等功能?我只有這些class.h,class.cpp和class.ui文件。
任何幫助非常感謝!
-Samuli
我在拖動&下降時遇到了很大的麻煩。我創建了一個新的Qt設計器表單類,其中我有一個QListWidget和一個QWidget。現在我想在這兩個小部件之間拖放&。使用.ui文件拖放
問題是,我可以在哪裏添加dragEnterEven(...),dragMoveEvent(...)等功能?我只有這些class.h,class.cpp和class.ui文件。
任何幫助非常感謝!
-Samuli
首先,如果你沒有看過Qt的Drag and Drop文檔,你真的想從那裏開始。我要告訴你的是對那裏有什麼的總結。一旦你閱讀過程描述,你也一定要看看drag and drop examples。
其次,如果我誤解了這一點,我很抱歉,你的問題聽起來像你對C++不太熟悉。您想要聲明.h
文件中的方法,並在.cpp
文件中定義它們。您可以使用Designer來完成某些事件聲明,但您需要在.cpp
中定義這些事件的實現。如果還不清楚,你需要先閱讀更多關於基本C++的知識。
如果你確定這些基本知識,這裏的拖放是如何工作的一個簡短的總結:
QDrag
:
mousePressEvent
或mouseMoveEvent
- 哪一個取決於您想要查看的確切行爲)。QMimeData
QMimeData::setText
)\QDrag::setMimeData
。QDrag::exec
。
QWidget::setAcceptDrops(true)
給定插件的acceptDrops
屬性:dropEvent
以處理丟棄。您使用setMimeData
在拖動中設置的數據可用作放置事件QDropEvent::mimeData
的方法。您需要使用適當的文檔類型從中提取數據(例如text()
)。這顯然是不完整的,但拖放有足夠的步驟,你真的應該詳細閱讀一次約他們,看一些例子。本摘要旨在讓您瞭解您需要做什麼。
最簡單的方法是繼承想要在其間拖放的QListWidget
和QWidget
,並處理這些實現中的事件。如果你這樣做,你應該能夠右鍵單擊設計器,並在主要的.ui文件中推廣這些小部件。
如果您不想繼承子類,則可以查看事件篩選器,並在每個小部件上安裝事件篩選器。事件過濾器可以處理導致調用dragEnterEvent()
和dragMoveEvent()
的事件。這可能會讓任何人稍後看到你的代碼更令人困惑。
我也是第二個quark's suggestion細讀的例子。你可以通過一個工作示例學習很多東西,並嘗試修改它來做一些稍微不同的事情。