簡體   English   中英

Qt 未發出快速信號

[英]Qt Quick signal not emitted

編輯

我沒有找到訪問 Class-Object 的活動實例的方法,所以我將所有Q_PROPERTIES轉移到一個 Class 中,這樣它們就可以相互交互了。 不是那么干凈和OOP-ish,但它可以工作。


我有一個 class 從 REST-Call 接收數據。 有了這些數據,我想調用另一個 class 的Q_PROPERTY Setter-Function,它工作正常。 我可以在調試模式下讀取我的屬性。 但有一件事不起作用:從另一個 class 調用Q_PROPERTY -Setter-Functions,不會發出信號(通常在更改此屬性時觸發)。

我正在使用具有讀寫通知功能的Q_PROPERTY ( Q_PROPERTY(QUuid id READ getId WRITE setId NOTIFY idChanged )。通過qmlRegisterType<VF_Kiste>("qt.kiste", 1,0, "Kiste");main.cpp我可以訪問 QML 中的屬性。

二傳手:

void VF_Kiste::setId(const QUuid& id)
{
    if (id == _id)
      return;
    
    _id = id;
    emit idChanged();
}

所以調用這個 Setter-Function 會改變屬性(我試過這個並且它有效)但不會發出我需要的 QML-Part 信號。 這是我調用setter的地方。

VF_Kiste* kst = new VF_Kiste();
...

kst->setId(...);

在 QML 中,我想調用描述的 function 的onIdChanged() -函數,但如果不發出信號,我無法訪問屬性的更改值。

我還嘗試直接從 QML 調用Q_PROPERTY ,而不是從繼承的 class 調用 Q_PROPERTY,這也可以,所以問題在於從另一個 class 調用設置器。

編輯

我沒有找到訪問 Class-Object 的活動實例的方法,所以我將所有Q_PROPERTIES轉移到一個 Class 中,這樣它們就可以相互交互了。 不是那么干凈和OOP-ish,但它可以工作。


我有一個 class 從 REST-Call 接收數據。 有了這些數據,我想調用另一個 class 的Q_PROPERTY Setter-Function,它工作正常。 我可以在調試模式下讀取我的屬性。 但有一件事不起作用:從另一個 class 調用Q_PROPERTY -Setter-Functions,不會發出信號(通常在更改此屬性時觸發)。

我正在使用具有讀寫通知功能的Q_PROPERTY ( Q_PROPERTY(QUuid id READ getId WRITE setId NOTIFY idChanged )。通過qmlRegisterType<VF_Kiste>("qt.kiste", 1,0, "Kiste");main.cpp我可以訪問 QML 中的屬性。

二傳手:

void VF_Kiste::setId(const QUuid& id)
{
    if (id == _id)
      return;
    
    _id = id;
    emit idChanged();
}

所以調用這個 Setter-Function 會改變屬性(我試過這個並且它有效)但不會發出我需要的 QML-Part 信號。 這是我調用setter的地方。

VF_Kiste* kst = new VF_Kiste();
...

kst->setId(...);

在 QML 中,我想調用描述的 function 的onIdChanged() -函數,但如果不發出信號,我無法訪問屬性的更改值。

我還嘗試直接從 QML 調用Q_PROPERTY ,而不是從繼承的 class 調用 Q_PROPERTY,這也可以,所以問題在於從另一個 class 調用設置器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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