[英]Propagate QML events to C++
我想將事件從QML信號處理程序傳播到C ++過程,但不知道如何傳遞“事件對象”。 看看這種情況,並特別注意SomeType
。
首先,我創建一個自定義QML項目,其中包含一個可以從QML調用的插槽:
class Tool : public QQuickItem
{
. . .
public slots:
virtual void onMousePositionChanged(SomeType *event);
}
然后,在QML中,我創建了一個MouseArea
和我想要將事件傳播到的自定義對象的實例。
MouseArea {
hoverEnabled: true
onPositionChanged: {
var event = . . .
tool.onMousePositionChanged(event);
}
}
Tool {
id: tool
}
而且存在問題。 我不知道如何組裝SomeType
的實例來傳遞給方法。 實際上我不知道我應該選擇什么作為SomeType
。 理想情況下,這將是QQuickMouseEvent
所以我可以調用tool.onMousePositionChanged(mouse)
,但由於某種原因,此類型不能在C ++代碼中使用。
我也考慮過QMouseEvent
所以我只需要重寫屬性,但這個類反過來似乎不能用於QML代碼。
我是Qt Quick的新手,所以也許我完全濫用了它。 我想要實現的是讓這個基礎Tool
類具有鼠標和鍵盤的虛擬事件處理程序,然后創建一個不同工具的集合,根據需要覆蓋它們。 它們將顯示在某種工具箱中,即帶有圖標的網格,用戶可以從中選擇當前工具。 選擇的工具是接收事件的工具。 歡迎任何設計建議。
嘗試使用QEvent
,然后使用event->type()
過濾事件類型 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.