[英]how to use a signal in qml file that was declarated in c++ file
我在QML中使用信號時遇到問題。 我已經在cpp文件中創建了一個信號,我想在qml文件AppUI.hpp中使用它:
Class ApplicationUI: public QObject {
Q_OBJECT
Q_PROPERTY(bool loading READ loading NOTIFY loadingChanged)
public:
Q_SIGNALS:
void loadingChanged();
private:
bool _loading;
bool loading() const;
...
}
在文件AppUI.cpp中 :
ApplicationUI::ApplicationUI(bb::cascades::Application *app) :
QObject(app),_loading(false) {
...
traitment
_loading=false;
emit lodingChanged();
}
bool AppnUI::loading() const{
return _loading;
}
並在QML文件中 :
MapView {
id: mapview
objectName: "mapViewObj"
visible: !_mapViewTest.loading
}
ActivityIndicator {
visible: _mapViewTest.loading
running: _mapViewTest.loading
}
但是這里的問題是我在控制台上收到此錯誤錯誤:類ApplicationUI中不存在屬性'loading'的NOTIFY信號'loadingChanged'。
首先,在c ++中,為了使您的數據成員加載對QML可見,您首先需要創建一個公共getter,並將其放入qproperty中,如下所示:
Q_PROPERTY(bool getloading READ getloading NOTIFY loadingChanged)
public bool getloading() const;
這是因為QML無法訪問c ++類中的私有成員。
另外,在QML中,您可以像這樣在c ++中使用信號:
onCreationCompleted: { // or other function
_mapViewTest.lodingChanged.connect(whatyouwanttodo);
}
function whatyouwanttodo() {
// do something
}
請注意,您連接的信號和功能需要具有相同的參數列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.