Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在qml文件中使用在c++;文件_C++_Signals_Qml_Blackberry 10 - Fatal编程技术网

C++ 如何在qml文件中使用在c++;文件

C++ 如何在qml文件中使用在c++;文件,c++,signals,qml,blackberry-10,C++,Signals,Qml,Blackberry 10,我在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

我在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;
...
}
ApplicationUI::ApplicationUI(bb::cascades::Application *app) :
        QObject(app),_loading(false) {
...
traitment
_loading=false;
emit lodingChanged();
}

bool AppnUI::loading() const{

    return _loading;
}
MapView {
            id: mapview
            objectName: "mapViewObj"
            visible: !_mapViewTest.loading
         }
ActivityIndicator {

            visible: _mapViewTest.loading
            running: _mapViewTest.loading
        }
在文件AppUI.cpp中:

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;
...
}
ApplicationUI::ApplicationUI(bb::cascades::Application *app) :
        QObject(app),_loading(false) {
...
traitment
_loading=false;
emit lodingChanged();
}

bool AppnUI::loading() const{

    return _loading;
}
MapView {
            id: mapview
            objectName: "mapViewObj"
            visible: !_mapViewTest.loading
         }
ActivityIndicator {

            visible: _mapViewTest.loading
            running: _mapViewTest.loading
        }
QML文件中

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;
...
}
ApplicationUI::ApplicationUI(bb::cascades::Application *app) :
        QObject(app),_loading(false) {
...
traitment
_loading=false;
emit lodingChanged();
}

bool AppnUI::loading() const{

    return _loading;
}
MapView {
            id: mapview
            objectName: "mapViewObj"
            visible: !_mapViewTest.loading
         }
ActivityIndicator {

            visible: _mapViewTest.loading
            running: _mapViewTest.loading
        }
但这里的问题是,我在控制台上得到了这个错误
错误:在Apple AptudioUI中不存在“加载”的通知信号“加载更改”。

< P>,C++中,为了使数据成员加载对QML可见,首先需要创建一个公共吸气剂,并将其设置为如下属性:

Q_PROPERTY(bool getloading READ getloading NOTIFY loadingChanged)

public bool getloading() const;
这是因为QML不能访问C++类中的私有成员。< /P>

也可以在QML中使用C++中的信号,如:

onCreationCompleted: { // or other function
    _mapViewTest.lodingChanged.connect(whatyouwanttodo);
}

function whatyouwanttodo() {
    // do something
}

请注意,您连接的信号和函数需要具有相同的参数列表

到目前为止,我看到的唯一错误是“emit lodingChanged();”拼写错误。您正在得到的控制台错误是否在C++或QML中表示问题?谢谢您的响应。我纠正了拼写,效果很好:)