簡體   English   中英

將QML事件傳播到C ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM