QML调用C++函数

来源:互联网 发布:淘宝分享链接怎么打开 编辑:程序博客网 时间:2024/05/30 22:53
                                                                           C++与QML传值信号1:
DataProvider.h
class DataProvider:public QObject
{
    Q_OBJECT
    Q_PROPERTY(QDeclarativeListProperty<PackageInfo> List READ List WRITE setList NOTIFY ListChanged)


    public:
explicit InstallDataInfo();
~InstallDataInfo();
Q_INVOKABLE void List();
         Q_INVOKABLE void setList(const QString&); //(1),这样申明可以在QML中调用此函数;
    private:
void setList(const QString&);  //(2),这样申明仅仅可以在c++中调用此函数;

    signals:
    void ListChanged();
}


                                                                              C++与QML传值信号2:
DataProvider.h
class DataProvider:public QObject
{
    Q_OBJECT
    Q_PROPERTY(QDeclarativeListProperty<PackageInfo> List READ List WRITE setList NOTIFY ListChanged)
   
    signals:
    void ValChanged(QString value)
}


=======================================================================
在main.cpp为qml调用注册type
    qmlRegisterType<DataProvider>("DataProvider", 1, 0, "DataProvider");
在具体实现qml中必须 import DataProvider 1.0
接收C++信号1:
        dataprovider.List();
接收C++信号2:
   property string data : "..."
DataProvider
{
  id: dataprovider;
  onValChanged:{
console.log("value :"+value);
data = value;
  }

}


                                                                                                     fmoonstar 更新至2013/05/17

           

原创粉丝点击