将数据从C ++交换到QML

时间:2015-03-06 12:49:39

标签: c++ qt qml

对于模糊的标题感到抱歉,我不知道如何更好地表达它,所以请原谅我。

我有一个存储数据的类,从QObject继承,以及loginSignal

class UserData : public QObject {
   Q_OBJECT
public:
   Q_INVOKABLE QString login(const QString p_user, const QString p_password, const bool p_remember);
   UserData(QObject* parent = 0);
   signals:
      void userLogin();
};

将课程注册为QML

qmlRegisterType<UserData>("UserData",1,0,"UserData");

连接到QML元素

ApplicationWindow {
   UserData {
      id:userData
   }
   Rectangle {
      Connections {
         target: userData
         onUserLogin : {
            doSomething()
         }
      }
   }
}

但是如果我在login()函数中调用emit(userLogin())信号,则QML中没有任何内容发生

int main(int argc, char *argv[]) {
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine(QUrl("qrc:///mainControl.qml"));
    QQmlContext* context = engine.rootContext();

    UserData userData;
    context->setContextProperty("userData",&userData);

        userData.login(user, pass, true);

    return app.exec();
}

也许QML组件尚未完成? 并感谢您选择

编辑:看起来我意外在QML中创建了第二个实例,并使用它。现在一切正常:D

0 个答案:

没有答案